NOT: Bu site kullanımdan kaldırılmıştır. Site 31 Ocak 2023'ten sonra kapatılacak ve trafik https://protobuf.dev adresindeki yeni siteye yönlendirilecek. Bu sırada, yalnızca protobuf.dev'de güncellemeler yapılacak.

açıklayıcı.h

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

Bu dosya, protokol iletisinin türünü açıklayan sınıflar içerir.

Çalışma zamanında hangi alanları içerdiğine ve bu alan türlerinin ne olduğuna dair bilgi edinmek için bir iletinin açıklayıcısını kullanabilirsiniz. Ayrıca Mesaj arayüzü, ilgilendiğiniz alanın FieldDescriptor parametresini ileterek, ilgili alanlara dinamik olarak erişmenize ve onları tek tek değiştirmenize olanak tanır.

Çoğu kullanıcı tanımlayıcılarla ilgilenmez. Bunun nedeni, belirli protokol türlerine özel kod yazmalarının ve doğrudan protokol derleyicinin oluşturduğu sınıfları kullanmalarıdır. İsteğe bağlı türler (derleme zamanında bilinmiyor) üzerinde çalışmak isteyen ileri düzey kullanıcılar, bir iletinin içeriği hakkında bilgi edinmek için tanımlayıcıları okuyabilir. Çok az sayıda kullanıcı, Message (İleti) öğesini manuel olarak uyguladıkları veya protokol derleyici gibi bir şey yazdıkları için kendi açıklayıcılarını oluşturmak ister.

Açıklayıcıları nasıl kullanabileceğinize dair örnek için message.h öğesinin üst tarafındaki kod örneğini inceleyin.

Bu dosyadaki sınıflar

Not: Tüm dizinler sıfır tabanlıdır.
DebugString() ile bir tanımlayıcıdan makine tarafından ayrıştırılabilir çıkış oluşturma seçenekleri.
Bir protokol mesajı türünü veya bir ileti içindeki belirli bir grubu açıklar.
Üçüncü taraf uzantıları için atanmış bir dizi alan numarası.
Ayrılmış alan numaraları aralığı.
Bir iletinin tek bir alanını açıklar.
Mesaj türünde tanımlı olanı tanımlar.
.proto dosyasında tanımlanan bir numaralandırma türünü açıklar.
Ayrılmış alan numaraları aralığı.
Belirli türdeki tek bir sıralama sabitini açıklar.
Bir TBG hizmetini açıklar.
Tek bir hizmet yöntemini açıklar.
Bir .proto dosyasının tamamını açıklar.
Tanımlayıcılar oluşturmak için kullanılır.
FileDescriptorProto'yu FileDescriptor'a dönüştürürken girişte çeşitli hatalar algılanabilir.

Kaynak Konumunu Yapılandır

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

Not: Tüm dizinler sıfır tabanlıdır.

Üyeler

int
start_line
int
end_line
int
start_column
int
end_column
std::string
leading_comments
Kaynak konumda doküman yorumları bulundu. devamı...
std::string
trailing_comments
std::vector< std::string >
leading_detached_comments

std::string SourceLocation::leading_comments

Kaynak konumda doküman yorumları bulundu.

Ayrıntılar için SourceCodeInfo.Location (descriptor.proto) dokümanındaki yorumlara bakın.

DebugStringOptions yapılandırma

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

DebugString() ile bir tanımlayıcıdan makine tarafından ayrıştırılabilir çıkış oluşturma seçenekleri.

Üyeler

bool
include_comments
SourceLocation girişlerinde kaydedilen orijinal kullanıcı yorumlarını ekleyin. devamı...
bool
elide_group_body
Doğru değerine ayarlanırsa hata ayıklama dizesindeki parantezli gövdeyi hariç tutun.
bool
elide_oneof_body
DebugStringOptions()

bool DebugStringOptions::include_comments

SourceLocation girişlerinde kaydedilen orijinal kullanıcı yorumlarını ekleyin.

Not: Bu ayarın varsayılan olarak |false| olması gerekir: Diğer birkaç kod parçası (örneğin, proto derleyicideki alanlar için C++ kod oluşturma işlemi), DebugString() çıkışının kullanıcı yorumları tarafından engellenmemesine dayanır.

sınıf tanımlayıcı

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

Bir protokol mesajı türünü veya bir ileti içindeki belirli bir grubu açıklar.

Belirli bir ileti nesnesi için Açıklayıcı'yı elde etmek üzere Message::GetDescriptor() yöntemini çağırın. Oluşturulan ileti sınıflarında, descriptor() adında türün tanımlayıcısını döndüren statik bir yöntem de bulunur. Kendi tanımlayıcılarınızı oluşturmak için DescriptorPool'u kullanın.

Üyeler

enum
WellKnownType
typedef
DescriptorProto Proto
const std::string &
name() const
Kapsam hariç, mesaj türünün adı.
const std::string &
full_name() const
Mesaj türünün noktayla ayrılmış tam nitelikli adı. devamı...
int
index() const
Bu tanımlayıcının dosya içindeki veya türün mesaj türü dizisini içeren dizini.
const FileDescriptor *
file() const
Bu mesaj türünün tanımlandığı .proto dosyası. Hiçbir zaman nullptr.
const Descriptor *
containing_type() const
Bu Açıklayıcı, iç içe yerleştirilmiş bir türü tanımlıyorsa iç içe yerleştirilmiş türünü döndürür. devamı...
const MessageOptions &
options() const
Bu mesaj türü için seçenekler sunun. devamı...
void
CopyTo(DescriptorProto * proto) const
Bu Descriptor içeriğini bu DescriptorProto'ya yazın. devamı...
std::string
DebugString() const
Bu tanımlayıcının içeriğini insanların okuyabileceği bir şekilde yazın. devamı...
std::string
DebugStringWithOptions(const DebugStringOptions & options) const
DebugString() işlevine benzer, ancak ek olarak (ör. çıkışa orijinal kullanıcı yorumlarını ekleme) seçenekler de alır.
bool
is_placeholder() const
Bu, bilinmeyen bir tür için yer tutucuysa doğru değerini döndürür. devamı...
WellKnownType
well_known_type() const

Alan bilgileri

int
field_count() const
Bu mesaj türündeki alanların sayısı.
const FieldDescriptor *
field(int index) const
Dizine göre bir alan alır, burada 0 <= index < field_count(). diğer...
const FieldDescriptor *
FindFieldByNumber(int number) const
Bir alanı, beyan edilen etiket numarasına göre arar. devamı...
const FieldDescriptor *
FindFieldByName(ConstStringParam name) const
Ada göre alan arar. Böyle bir alan yoksa nullptr değerini döndürür.
const FieldDescriptor *
FindFieldByLowercaseName(ConstStringParam lowercase_name) const
Bir alan adında küçük harf ile arama yapar (small_name() işlevi tarafından döndürüldüğü şekilde). diğer...
const FieldDescriptor *
FindFieldByCamelcaseName(ConstStringParam camelcase_name) const
Bir alanı deve için büyük/küçük harf adına göre arar (Comelcase_name() tarafından döndürüldüğü gibi). diğer...
int
oneof_decl_count() const
Bu mesaj türündeki öğelerin sayısı.
int
real_oneof_decl_count() const
Bu mesaj türündeki yapay sentez hariç tanesinin sayısı. devamı...
const OneofDescriptor *
oneof_decl(int index) const
0 <= endeks < oneof_decl_count() ile dizine tek seferlik bir değer alın. diğer...
const OneofDescriptor *
FindOneofByName(ConstStringParam name) const
Ada göre birini arayın. Böyle bir etiket yoksa boş değer döndürür.

İç içe yerleştirilmiş türler

int
nested_type_count() const
Bu mesaj türündeki iç içe yerleştirilmiş tür sayısı.
const Descriptor *
nested_type(int index) const
Dizine göre iç içe geçmiş tür alır, burada 0 <= endeksi < nested_type_count(). diğer...
const Descriptor *
FindNestedTypeByName(ConstStringParam name) const
Ada göre iç içe yerleştirilmiş bir tür arar. devamı...

Sıralama bilgileri

int
enum_type_count() const
Bu mesaj türündeki numaralandırma türü sayısı.
const EnumDescriptor *
enum_type(int index) const
Dizine göre bir sıralama türü alır, burada 0 <= index < enum_type_count(). diğer...
const EnumDescriptor *
FindEnumTypeByName(ConstStringParam name) const
Ada göre sıralama türü arar. devamı...
const EnumValueDescriptor *
FindEnumValueByName(ConstStringParam name) const
Bu iletideki tüm sıralama türleri arasında ada göre bir sıralama değeri arar. devamı...

Uzantılar

int
extension_range_count() const
Bu mesaj türündeki uzantı aralıklarının sayısı.
const ExtensionRange *
extension_range(int index) const
Dizine göre bir uzantı aralığı alır; burada 0 <= index < extension_range_count(). diğer...
bool
IsExtensionNumber(int number) const
Sayı, uzantı aralıklarından birindeyse true değerini döndürür.
const ExtensionRange *
FindExtensionRangeContainingNumber(int number) const
Belirtilen sayıda uzantı aralığı yoksa nullptr değerini döndürür.
int
extension_count() const
Bu mesaj türünün kapsamı içinde yer alan şekilde tanımlanan uzantıların sayısı. devamı...
const FieldDescriptor *
extension(int index) const
Dizine göre bir uzantı alın, 0 <= index < extension_count(). diğer...
const FieldDescriptor *
FindExtensionByName(ConstStringParam name) const
Bu ileti türünün kapsamında tanımlanan bir adlandırılmış uzantı (diğer ileti türlerini genişletir) arar.
const FieldDescriptor *
FindExtensionByLowercaseName(ConstStringParam name) const
FindFieldByDownercaseName() işlevine benzer, ancak bu ileti türünün kapsamında tanımlanan uzantıları bulur.
const FieldDescriptor *
FindExtensionByCamelcaseName(ConstStringParam name) const
FindFieldByCamelcaseName() işlevine benzer, ancak bu ileti türünün kapsamında tanımlanan uzantıları bulur.

Ayrılmış alanlar

int
reserved_range_count() const
Bu mesaj türündeki ayrılmış aralıkların sayısı.
const ReservedRange *
reserved_range(int index) const
Dizine göre ayrılmış bir aralık alır (0 <= index < re Reserve_range_count()). diğer...
bool
IsReservedNumber(int number) const
Sayı, ayrılmış aralıklardan birindeyse "true" değerini döndürür.
const ReservedRange *
FindReservedRangeContainingNumber(int number) const
Belirtilen sayıda ayrılmış aralık yoksa boş değer döndürür.
int
reserved_name_count() const
Bu mesaj türündeki ayrılmış alan adlarının sayısı.
const std::string &
reserved_name(int index) const
Dizine göre ayrılmış bir ad alır (burada 0 <= index < re Reserve_name_count()). diğer...
bool
IsReservedName(ConstStringParam name) const
Alan adı ayrılmışsa true değerini döndürür.

Kaynak Konumu

bool
GetSourceLocation(SourceLocation * out_location) const
Bu mesaj beyanının tam kapsamını |*out_location| ve kaynak konumunu günceller. devamı...

Haritalar

const FieldDescriptor *
map_key() const
"key" alanı için FieldDescriptor değerini döndürür. devamı...
const FieldDescriptor *
map_value() const
"value" alanı için FieldDescriptor değerini döndürür. devamı...

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_UNSPECIFIEDBilinen bir tür değil.
WELLKNOWNTYPE_DOUBLEVALUE

Sarmalayıcı türleri.

google.protobuf.Çift Değer

WELLKNOWNTYPE_FLOATVALUEgoogle.protobuf.KayanDeğer
WELLKNOWNTYPE_INT64VALUEgoogle.protobuf.Int64Değer
WELLKNOWNTYPE_UINT64VALUEgoogle.protobuf.UInt64Değer
WELLKNOWNTYPE_INT32VALUEgoogle.protobuf.Int32Değer
WELLKNOWNTYPE_UINT32VALUEgoogle.protobuf.UInt32Değer
WELLKNOWNTYPE_STRINGVALUEgoogle.protobuf.DizeDeğeri
WELLKNOWNTYPE_BYTESVALUEgoogle.protobuf.BytesValue
WELLKNOWNTYPE_BOOLVALUEgoogle.protobuf.BoolDeğer
ELLER

İyi bilinen diğer türler.

google.protobuf.

WELLKNOWNTYPE_FIELDMASKgoogle.protobuf.AlanMaskesi
WELLKNOWNTYPE_DURATIONgoogle.protobuf.Süre
WELLKNOWNTYPE_TIMESTAMPgoogle.protobuf.Zaman Damgası
WELLKNOWNTYPE_VALUEgoogle.protobuf.Değer
WELLKNOWNTYPE_LISTVALUEgoogle.protobuf.ListeDeğeri
WELLKNOWNTYPE_STRUCTgoogle.protobuf.Struct
__WELLKNOWNTYPE__DO_NOT_USE__ADD_DEFAULT_INSTEAD__

İleride, iyi bilinen yeni türler eklenebilir.

Lütfen Switch() ifadelerinin "varsayılan" büyük/küçük harf kullanımına dikkat edin.


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

Mesaj türünün noktayla ayrılmış tam nitelikli adı.

Örneğin, "bar" paketinde beyan edilen "Foo" mesaj türünün tam adı "bar.Foo"dur. Foo'da "Baz" türü iç içe yerleştirilmişse Baz'ın tam adı "bar.Foo.Baz"dır. Yalnızca son "." karakterinden sonra gelen kısmı almak için name() kullanın.


const Descriptor *
    Descriptor::containing_type() const

Bu Açıklayıcı, iç içe yerleştirilmiş bir türü tanımlıyorsa iç içe yerleştirilmiş türünü döndürür.

Aksi takdirde nullptr değerini döndürür.


const MessageOptions &
    Descriptor::options() const

Bu mesaj türü için seçenekler sunun.

Bunlar, .proto dosyasında, mesaj tanımına "option foo = 1234;" gibi satırlar yerleştirilerek belirtilir. İzin verilen seçenekler, descriptor.proto'daki MessageOptions ve bu iletinin kullanılabilir uzantıları tarafından tanımlanır.


void Descriptor::CopyTo(
        DescriptorProto * proto) const

Bu Descriptor içeriğini bu DescriptorProto'ya yazın.

Bu komut dosyası çağrılmadan önce hedef DescriptorProto net olmalıdır. Aksi takdirde sonuç çöp olabilir.


std::string Descriptor::DebugString() const

Bu tanımlayıcının içeriğini insanların okuyabileceği bir şekilde yazın.

Çıkış, yeniden ayrıştırma için uygun olacak.


bool Descriptor::is_placeholder() const

Bu, bilinmeyen bir tür için yer tutucuysa doğru değerini döndürür.

Bu durum yalnızca bu tanımlayıcı, AllowUnknownDependencies() ayarlanmış bir DescriptorPool'dan geliyorsa geçerlidir.


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

Bir alanı dizin bazında alır, burada 0 <= index < field_count().

Bunlar, .proto dosyasında tanımlandığı sırayla döndürülür.


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

Bir alanı, beyan edilen etiket numarasına göre arar.

Böyle bir alan yoksa nullptr değerini döndürür.


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

Bir alan adında küçük harf ile arama yapar (small_name() işlevi tarafından döndürüldüğü şekilde).

Bu arama, birden fazla alan adı yalnızca büyük/küçük harfe göre farklılık gösteriyorsa belirsiz olabilir. Bu durumda, döndürülen alan eşleşmelerden rastgele seçilir.


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

Bir alanı deve için büyük/küçük harf adına göre arar (Comelcase_name() ile döndürüldüğü şekilde).

Bu arama, birden fazla alan adının aynı deve-büyük harf adlarına sahip olmasına yol açacak şekilde farklıysa belirsiz olabilir. Bu durumda, döndürülen alan eşleşmelerden rastgele seçilir.


int Descriptor::real_oneof_decl_count() const

Bu mesaj türündeki yapay sentez hariç tanesinin sayısı.

Gerçek abonmanlar her zaman önce gelir. Bu nedenle Real_oneof_decl_cout() kadar tekrarlamak tüm gerçek abonmanları sağlar.


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

0 <= endeks < oneof_decl_count() ile dizine tek bir değer girin.

Bunlar, .proto dosyasında tanımlandığı sırayla döndürülür.


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

Dizine göre iç içe yerleştirilmiş bir tür alır (burada 0 <= index < nested_type_count()).

Bunlar, .proto dosyasında tanımlandığı sırayla döndürülür.


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

Ada göre iç içe yerleştirilmiş bir tür arar.

Böyle bir iç içe yerleştirilmiş tür yoksa nullptr değerini döndürür.


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

Dizine göre bir sıralama türü alır (0 <= index < enum_type_count()).

Bunlar, .proto dosyasında tanımlandığı sırayla döndürülür.


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

Ada göre sıralama türü arar.

Böyle bir sıralama türü yoksa boş değer döndürür.


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

Bu iletideki tüm sıralama türleri arasında ada göre bir sıralama değeri arar.

Böyle bir değer yoksa boş değer döndürür.


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

Dizine göre bir uzantı aralığı alır (burada 0 <= index < extension_range_count()).

Bunlar, .proto dosyasında tanımlandığı sırayla döndürülür.


int Descriptor::extension_count() const

Bu mesaj türünün kapsamı içinde yer alan şekilde tanımlanan uzantıların sayısı.

Dokümanı inceleyin:

Uzantıların diğer iletileri genişletebileceğini unutmayın.

Örneğin: M1 {

extensions 1 to max;

}

mesaj M2 {

extend M1 {
  optional int32 foo = 1;
}

}

Bu durumda, DescriptorPool::generate_pool()

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

"foo", M1'in bir uzantısı olsa bile "foo" değerini döndürür. Belirli bir iletinin bilinen tüm uzantılarını bulmak için bunun yerine DescriptorPool::FindAllExtensions işlevini kullanın.


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

Dizine göre bir uzantı alın, 0 <= index < extension_count().

Bunlar, .proto dosyasında tanımlandığı sırayla döndürülür.


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

Dizine göre ayrılmış bir aralık alır (burada 0 <= index < re Reserve_range_count()).

Bunlar, .proto dosyasında tanımlandığı sırayla döndürülür.


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

Dizine göre ayrılmış bir ad alır (burada 0 <= index < reserve_name_count()).

Reserve_names_ aslında normal nesne dizisi yerine bir işaretçi dizisi olduğundan PROTOBUF_DEFINE_ARRAY_ACCESSOR kullanılamıyor.


bool Descriptor::GetSourceLocation(
        SourceLocation * out_location) const

Bu mesaj beyanının tam kapsamını |*out_location| ve kaynak konumunu günceller.

Yanlış değerini döndürür ve konum bilgisi mevcut değilse |*out_location| değişmez.


const FieldDescriptor *
    Descriptor::map_key() const

"key" alanı için FieldDescriptor değerini döndürür.

Bu bir harita girişi alanı değilse nullptr değerini döndürür.


const FieldDescriptor *
    Descriptor::map_value() const

"value" alanı için FieldDescriptor değerini döndürür.

Bu bir harita girişi alanı değilse nullptr değerini döndürür.

yapısal Tanımlayıcı::ExtensionRange

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

Üçüncü taraf uzantıları için atanmış bir dizi alan numarası.

Üyeler

typedef
DescriptorProto_ExtensionRange Proto
typedef
ExtensionRangeOptions OptionsType
int
start
kapsayıcı
int
end
özel
const ExtensionRangeOptions *
options_
void
CopyTo(DescriptorProto_ExtensionRange * proto) const
Descriptor::CopyTo() bölümünü inceleyin.

yapı Açıklama::Ayrılmış Aralık

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

Ayrılmış alan numaraları aralığı.

Üyeler

int
start
kapsayıcı
int
end
özel

sınıf FieldDescriptor

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

Bir iletinin tek bir alanını açıklar.

Belirli bir alanın tanımlayıcısını almak için öncelikle tanımlandığı mesajın Açıklayıcı'sını alın, ardından Descriptor::FindFieldByName() yöntemini çağırın. Bir uzantıya ilişkin FieldDescriptor almak için aşağıdakilerden birini yapın:

Üyeler

enum
Type
Alan türünü tanımlar. devamı...
enum
CppType
Alanı temsil etmek için kullanılan C++ veri türünü belirtir. devamı...
enum
Label
Alanın isteğe bağlı, zorunlu veya tekrarlanan olup olmadığını belirtir. devamı...
typedef
FieldDescriptorProto Proto
const int
kMaxNumber = = (1 << 29) - 1
Geçerli alan sayıları, kMaxNumber sayısına kadar olan pozitif tam sayılardır.
const int
kFirstReservedNumber = = 19000
Protokol arabelleği kitaplığı uygulaması için ayrılmış ilk alan numarası. devamı...
const int
kLastReservedNumber = = 19999
Protokol arabelleği kitaplığı uygulaması için ayrılmış son alan numarası. devamı...
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
Mesajdaki bu alanın adı.
const std::string &
full_name() const
Alanın tam nitelikli adı.
const std::string &
json_name() const
Bu alanın JSON adı.
const FileDescriptor *
file() const
Bu alanın tanımlandığı dosya.
bool
is_extension() const
Burası bir uzantı alanı mı?
int
number() const
Bildirilen etiket numarası.
const std::string &
lowercase_name() const
ad() ile aynıdır ancak küçük harfe dönüştürülür. devamı...
const std::string &
camelcase_name() const
Deve için büyük/küçük harf kullanımına dönüştürme hariç name() ile aynıdır. devamı...
Type
type() const
Bu alanın beyan edilen türü.
const char *
type_name() const
Bildirilen türün adı.
CppType
cpp_type() const
Bu alanın C++ türü.
const char *
cpp_type_name() const
C++ türünün adı.
Label
label() const
isteğe bağlı/zorunlu/tekrarlanan
bool
is_required() const
label() için kısaltılmış == LABEL_REQUIRED
bool
is_optional() const
label() için kısaltılmış == LABEL_OPTIONAL
bool
is_repeated() const
label() için kısaltılmış == LABEL_REPEATED
bool
is_packable() const
is_duplicateed() && IsTypePackable(type()) için kısaltılmış
bool
is_packed() const
is_packable() && option().packed()
bool
is_map() const
type() == TYPE_MESSAGE && message_type()->option().map_intro()
bool
has_optional_keyword() const
Bu alan, söz dizimi .proto dosyasında söz dizimiyle yazılmışsa doğru değerini döndürür. devamı...
bool
has_presence() const
Bu alan varlığını izlerse doğru değerini döndürür (ör. devamı...
int
index() const
Mesajın alan dizisindeki veya dosya veya uzantı kapsamının uzantı dizisi içindeki bu alanın dizini.
bool
has_default_value() const
Bu alanda açıkça tanımlanmış bir varsayılan değer var mı?
bool
has_json_name() const
Kullanıcının .proto dosyasında json_name alanı seçeneğini belirleyip belirlemediği.
int32
default_value_int32() const
cpp_type() == CPPTYPE_INT32 ise alanın varsayılan değerini alın. devamı...
int64
default_value_int64() const
cpp_type() == CPPTYPE_INT64 ise alan varsayılan değerini alın. devamı...
uint32
default_value_uint32() const
cpp_type() == CPPTYPE_UINT32 ise alanın varsayılan değerini alın. devamı...
uint64
default_value_uint64() const
cpp_type() == CPPTYPE_UINT64 ise alan varsayılan değerini alın. devamı...
float
default_value_float() const
cpp_type() == CPPTYPE_FLOAT ise alan varsayılan değerini alın. devamı...
double
default_value_double() const
cpp_type() == CPPTYPE_DOUBLE ise alanın varsayılan değerini alın. devamı...
bool
default_value_bool() const
cpp_type() == CPPTYPE_BOOL ise alanın varsayılan değerini alın. devamı...
const EnumValueDescriptor *
default_value_enum() const
cpp_type() == CPPTYPE_ENUM ise alanın varsayılan değerini alın. devamı...
const std::string &
default_value_string() const
cpp_type() == CPPTYPE_STRING ise alanın varsayılan değerini alın. devamı...
const Descriptor *
containing_type() const
Bunun bir alan olduğu mesajın Açıklayıcı'sı. devamı...
const OneofDescriptor *
containing_oneof() const
Alan, onenu üyelerinden biriyse nullptr olmalıdır.
const OneofDescriptor *
real_containing_oneof() const
Alan, sentetik olmayan bir oneof'un üyesiyse oneof için tanımlayıcıyı döndürür, aksi takdirde nullptr değerini döndürür.
int
index_in_oneof() const
Alan bir Oneof'un üyesiyse bu ihtiyaca karşılık gelen dizini döndürür.
const Descriptor *
extension_scope() const
Bir uzantı, başka bir mesajın kapsamında tanımlanabilir. devamı...
const Descriptor *
message_type() const
TYPE_MESSAGE veya TYPE_GROUP türünde mesaj veya grup türü için bir tanımlayıcı döndürür. devamı...
const EnumDescriptor *
enum_type() const
TYPE_ENUM türündeyse sıralama için bir tanımlayıcı döndürür. devamı...
const FieldOptions &
options() const
Bu alan için FieldOptions'ı edinin. devamı...
void
CopyTo(FieldDescriptorProto * proto) const
Descriptor::CopyTo() bölümünü inceleyin.
std::string
DebugString() const
Descriptor::DebugString() bölümüne bakın.
std::string
DebugStringWithOptions(const DebugStringOptions & options) const
const std::string &
PrintableNameForExtension() const
Alanın bir MessageSet uzantısı olması hariç full_name() değerini döndürür. Bu durumda alan, proto1 ile geriye dönük uyumluluk için kapsayıcı mesaj türünün full_name() parametresini döndürür. devamı...
static CppType
TypeToCppType(Type type)
Belirli bir tür için CppType'ı alma yardımcı yöntemi.
static const char *
TypeName(Type type)
Bir Türün adını almak için yardımcı yöntem.
static const char *
CppTypeName(CppType cpp_type)
Bir CppType adını alma konusunda yardımcı yöntem.
static bool
IsTypePackable(Type field_type)
Doğruysa [[]packed = true] bu tür alanlar için geçerlidir.

Kaynak Konumu

bool
GetSourceLocation(SourceLocation * out_location) const
|*out_location|, bu alan beyanının tüm kapsamının kaynak konumu olarak güncellenir. devamı...

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
}

Alan türünü tanımlar.

0 hatalara ayrılmıştır. Sipariş geçmiş nedenlerden dolayı garip. Proto2'deki 12 ve üzeri türler yenidir.

TÜR_ÇİFTiki bayt, tam olarak sekiz bayttır.
TÜR_FLOATtelin üzerinde tam dört bayt.
TÜR_INT64

int64, kablo üzerinde bağırın.

Negatif sayılar 10 bayttır. Negatif değerler olasılığı varsa TYPE_SINT64 kullanın.

TYPE_UINT64uint64, kablo üzerinde şarj edin.
TÜR_INT32

int32, kablo üzerinde bağdaştırın.

Negatif sayılar 10 bayttır. Negatif değer olasılığı yüksekse TYPE_SINT32 kullanın.

TYPE_FIXED64uint64, kablo üzerinde tam sekiz bayt.
TÜR_FIXED32uint32, telde tam olarak dört bayt var.
TÜR_BOOLHadi, kabloyu dizmek.
TYPE_STRINGUTF-8 metni.
TÜR_GRUPEtiketle ayrılmış ileti. Kullanımdan kaldırıldı.
TYPE_MESSAGEUzunluk bilgisi olan mesaj.
TYPE_BYTESRastgele bayt dizisi.
TYPE_UINT32uint32, teli üstünde
TÜR_ENUMNumara, kablonun tepesinde.
TÜR_SFIXED32int32, telde tam olarak dört bayt
TÜR_SFIXED64int64, kablo üzerinde tam sekiz bayt
TÜR_SINT32int32, Kablo üzerinde ZigZag kodlu varyasyon
TÜR_SINT64int64, Kablo üzerinde ZigZag kodlu varyasyon
MAKS. TÜRTüre göre dizine eklenen arama tablolarını tanımlamak için sabit değer.

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
}

Alanı temsil etmek için kullanılan C++ veri türünü belirtir.

Türden CppType'a sabit bir eşleme vardır. Burada her tür, tam olarak bir CppType ile eşlenir. 0 hatalara ayrılmıştır.

PBMTYPE_INT32TYPE_INT32, TYPE_SINT32, TYPE_SFIXED32'dir.
CPPTYPE_INT64TYPE_INT64, TYPE_SINT64, TYPE_SFIXED64.
CPPTYPE_UINT32TYPE_UINT32, TYPE_FIXED32.
CPPTYPE_UINT64TYPE_UINT64, TYPE_FIXED64.
PBMTYPE_ÇİFTTYPE_DOUBLE.
CPPTYPE_FLOATTYPE_FLOAT.
CPPTYPE_BOOLTYPE_BOOL.
CPPTYPE_ENUMTYPE_ENUM.
CPPTYPE_STRINGTYPE_STRING, TYPE_BYTES.
CPPTYPE_MESSAGETYPE_MESSAGE, TYPE_GROUP.
MAKS. PBMCppType tarafından dizine eklenen arama tablolarının tanımlanmasında sürekli olarak kullanılır.

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

Alanın isteğe bağlı, zorunlu veya tekrarlanan olup olmadığını belirtir.

0 hatalara ayrılmıştır.

LABEL_İSTEĞE BAĞLIisteğe bağlı
ETİKET_GEREKLİzorunlu
ETİKET_YAPILANDIRILDItekrarlanan
MAKS.ETİKETEtikete göre dizine eklenen arama tablolarını tanımlamak için sabit değer.

const int FieldDescriptor::kFirstReservedNumber = = 19000

Protokol arabelleği kitaplığı uygulaması için ayrılmış ilk alan numarası.

Kullanıcılar, ayrılmış numaraları kullanan alanları tanımlayamaz.


const int FieldDescriptor::kLastReservedNumber = = 19999

Protokol arabelleği kitaplığı uygulaması için ayrılmış son alan numarası.

Kullanıcılar, ayrılmış numaraları kullanan alanları tanımlayamaz.


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

ad() ile aynıdır ancak küçük harfe dönüştürülür.

Bu (ve özellikle FinderFieldByDownercaseName() yöntemi), küçük adlandırma stili kullanmayı tercih eden biçimleri ayrıştırırken yararlı olabilir. (Protobuf stil kılavuzuna göre teknik olarak alan adlarının yine de küçük harfle yazılması gerekir. Dolayısıyla bu yöntem, yalnızca rehbere uymayan eski .proto dosyalarıyla çalışırken fark yaratır.)


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

Deve için büyük/küçük harf kullanımına dönüştürme hariç name() ile aynıdır.

Bu dönüşümde, adın alt çizgisi her gösterildiğinde alt çizgi kaldırılır ve sonraki harf büyük yazılır. Ayrıca, adın ilk harfi büyük yazılır. Örnekler:

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

Bu (ve özellikle FinderFieldByCamelcaseName() yöntemi), deve-büyük harf adlandırma stilini kullanmayı tercih eden biçimleri ayrıştırırken yararlı olabilir.


bool FieldDescriptor::has_optional_keyword() const

Bu alan, söz dizimi .proto dosyasında söz dizimiyle yazılmışsa doğru değerini döndürür.

Etiketi olmayan tekli proto3 alanlarını hariç tutar.


bool FieldDescriptor::has_presence() const

Bu alan varlığını izlerse doğru değerini döndürür (ör.

alanın "ayarlanmadı" ve "varsayılan değerle göster" seçenekleri arasında ayrım yapar. Buna zorunlu, isteğe bağlı ve Oneone alanları dahildir. "İsteğe bağlı" kullanılmayan haritaları, yinelenen alanları ve tekil proto3 alanlarını hariç tutar.

has_presence() == true olan alanlarda Reflection::HasField() işlevinin döndürdüğü değer, anlam açısından anlamlıdır.


int32 FieldDescriptor::default_value_int32() const

cpp_type() == CPPTYPE_INT32 ise alanın varsayılan değerini alın.

Açıkça tanımlanan bir varsayılan yoksa 0 varsayılandır.


int64 FieldDescriptor::default_value_int64() const

cpp_type() == CPPTYPE_INT64 ise alan varsayılan değerini alın.

Açıkça tanımlanan bir varsayılan yoksa 0 varsayılandır.


uint32 FieldDescriptor::default_value_uint32() const

cpp_type() == CPPTYPE_UINT32 ise alanın varsayılan değerini alın.

Açıkça tanımlanan bir varsayılan yoksa 0 varsayılandır.


uint64 FieldDescriptor::default_value_uint64() const

cpp_type() == CPPTYPE_UINT64 ise alan varsayılan değerini alın.

Açıkça tanımlanan bir varsayılan yoksa 0 varsayılandır.


float FieldDescriptor::default_value_float() const

cpp_type() == CPPTYPE_FLOAT ise alan varsayılan değerini alın.

Açıkça tanımlanan bir varsayılan yoksa varsayılan değer 0, 0'dır.


double FieldDescriptor::default_value_double() const

cpp_type() == CPPTYPE_DOUBLE ise alanın varsayılan değerini alın.

Açıkça tanımlanan bir varsayılan yoksa varsayılan değer 0, 0'dır.


bool FieldDescriptor::default_value_bool() const

cpp_type() == CPPTYPE_BOOL ise alanın varsayılan değerini alın.

Açıkça tanımlanan bir varsayılan yoksa false olarak ayarlanır.


const EnumValueDescriptor *
    FieldDescriptor::default_value_enum() const

cpp_type() == CPPTYPE_ENUM ise alanın varsayılan değerini alın.

Açıkça tanımlanan bir varsayılan yoksa enum türünde tanımlanan ilk değer varsayılandır (tüm sıralama türlerinin en az bir değeri olması gerekir). Bu, asla nullptr döndürmez.


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

cpp_type() == CPPTYPE_STRING ise alanın varsayılan değerini alın.

Açıkça tanımlanan bir varsayılan yoksa boş dizedir.


const Descriptor *
    FieldDescriptor::containing_type() const

Bunun bir alan olduğu mesajın Açıklayıcı'sı.

Uzantılar için genişletilmiş tür budur. Hiçbir zaman nullptr.


const Descriptor *
    FieldDescriptor::extension_scope() const

Bir uzantı, başka bir mesajın kapsamında tanımlanabilir.

Bu alan bir uzantıysa (is_extension() doğruysa) extension_scope() bu mesajı, uzantı genel kapsamda beyan edilmişse nullptr döndürür. Bu bir uzantı değilse extension_scope() tanımsızdır (başarısız olabilir).


const Descriptor *
    FieldDescriptor::message_type() const

TYPE_MESSAGE veya TYPE_GROUP türünde mesaj veya grup türü için bir tanımlayıcı döndürür.

Aksi takdirde null değerini döndürür.


const EnumDescriptor *
    FieldDescriptor::enum_type() const

TYPE_ENUM türündeyse sıralama için bir tanımlayıcı döndürür.

Aksi takdirde null değerini döndürür.


const FieldOptions &
    FieldDescriptor::options() const

Bu alan için FieldOptions'ı edinin.

Buna, alan tanımından sonra köşeli parantez içinde listelenenler dahildir. Ör. alan:

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

"ctype" seçeneği belirlenmiştir. İzin verilen seçenekler, descriptor.proto'daki FieldOptions ve bu iletinin kullanılabilir uzantıları tarafından tanımlanır.


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

Alanın bir MessageSet uzantısı olması hariç full_name() değerini döndürür. Bu durumda alan, proto1 ile geriye dönük uyumluluk için kapsayıcı mesaj türünün full_name() parametresini döndürür.

Mesaj Grubu uzantısı, mesaj türünün mesaj_grubu_iletisi_biçimi ayarlanmış olan isteğe bağlı bir mesaj uzantısı olarak tanımlanır. Bu, google.protobuf.bridge.MessageSet uzantıları için doğrudur. Genel olarak, bu tür uzantılar "message_set_extension" olarak adlandırılır.

Karşıt işlem (yazdırılabilir adına göre bir uzantının FieldDescriptor değerine bakılarak)

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

Uzantının "mesaj"ı uzattığı yer


bool FieldDescriptor::GetSourceLocation(
        SourceLocation * out_location) const

|*out_location|, bu alan beyanının tüm kapsamının kaynak konumu olarak güncellenir.

Yanlış değerini döndürür ve konum bilgisi mevcut değilse |*out_location| değişmez.

OneofDescriptor sınıfı

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

Mesaj türünde tanımlı olanı tanımlar.

Üyeler

typedef
OneofDescriptorProto Proto
const std::string &
name() const
Bu adlardan birinin adı.
const std::string &
full_name() const
Oneof'un tam nitelikli adı.
int
index() const
İletinin oneof dizisindeki bu bağımsız dizinin.
bool
is_synthetic() const
İsteğe bağlı bir proto3 alanını sarmalamak için bu alanın derleyici tarafından eklenip eklenmediğini döndürür. devamı...
const FileDescriptor *
file() const
Bu öğenin tanımlandığı .proto dosyası. Hiçbir zaman nullptr.
const Descriptor *
containing_type() const
Bu seçeneklerden birini içeren mesajın Açıklayıcısı.
int
field_count() const
Bu uzantılardan birinin (uzantı olmayan) alanlarının sayısı.
const FieldDescriptor *
field(int index) const
Bu komitenin bir üyesini, .proto dosyasında bildirildikleri sırayla alın. devamı...
const OneofOptions &
options() const
void
CopyTo(OneofDescriptorProto * proto) const
Descriptor::CopyTo() bölümünü inceleyin.
std::string
DebugString() const
Descriptor::DebugString() bölümüne bakın.
std::string
DebugStringWithOptions(const DebugStringOptions & options) const

Kaynak Konumu

bool
GetSourceLocation(SourceLocation * out_location) const
|*out_location|, bu bağımsız bildirimin tam kapsamını kaynak konuma günceller. devamı...

bool OneofDescriptor::is_synthetic() const

İsteğe bağlı bir proto3 alanını sarmalamak için bu alanın derleyici tarafından eklenip eklenmediğini döndürür.

Bu değer true (doğru) değerini döndürürse kod oluşturucular bunu yayınlamamalıdır.


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

Bu komitenin bir üyesini, .proto dosyasında bildirildikleri sırayla alın.

Field_ aslında normal nesne dizisi yerine bir işaretçi dizisi olduğundan PROTOBUF_DEFINE_ARRAY_ACCESSOR kullanılamıyor.

Uzantı içermez.


bool OneofDescriptor::GetSourceLocation(
        SourceLocation * out_location) const

|*out_location|, bu bağımsız bildirimin tam kapsamını kaynak konuma günceller.

Yanlış değerini döndürür ve konum bilgisi mevcut değilse |*out_location| değişmez.

sınıf EnumDescriptor

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

.proto dosyasında tanımlanan bir numaralandırma türünü açıklar.

Oluşturulmuş bir sıralama türü için EnumDescriptor almak üzere TypeName_descriptor() işlevini çağırın. Kendi tanımlayıcılarınızı oluşturmak için DescriptorPool kullanın.

Üyeler

typedef
EnumDescriptorProto Proto
const std::string &
name() const
Kapsayıcı kapsamda bu sıralama türünün adı.
const std::string &
full_name() const
Sıralama türünün noktayla ayrılmış tam nitelikli adı.
int
index() const
Bu numaranın dosyadaki veya mesajın enum dizisini içeren dizini.
const FileDescriptor *
file() const
Bu numaralandırma türünün tanımlandığı .proto dosyası. Hiçbir zaman nullptr.
int
value_count() const
Bu EnumDescriptor için değer sayısı. devamı...
const EnumValueDescriptor *
value(int index) const
Dizine göre değer alır; burada 0 <= index < value_count(). diğer...
const EnumValueDescriptor *
FindValueByName(ConstStringParam name) const
Ada göre bir değer arar. Böyle bir değer yoksa boş değer döndürür.
const EnumValueDescriptor *
FindValueByNumber(int number) const
Sayıya göre bir değer arar. devamı...
const Descriptor *
containing_type() const
Bu sıralama türü bir mesaj türüne yerleştirilmişse bu mesaj türüdür. devamı...
const EnumOptions &
options() const
Bu enum türü için seçenekler alın. devamı...
void
CopyTo(EnumDescriptorProto * proto) const
Descriptor::CopyTo() bölümünü inceleyin.
std::string
DebugString() const
Descriptor::DebugString() bölümüne bakın.
std::string
DebugStringWithOptions(const DebugStringOptions & options) const
bool
is_placeholder() const
Bu, bilinmeyen bir sıralama için yer tutucu ise doğru değerini döndürür. devamı...

Ayrılmış alanlar

int
reserved_range_count() const
Bu mesaj türündeki ayrılmış aralıkların sayısı.
const EnumDescriptor::ReservedRange *
reserved_range(int index) const
Dizine göre ayrılmış bir aralık alır (0 <= index < re Reserve_range_count()). diğer...
bool
IsReservedNumber(int number) const
Sayı, ayrılmış aralıklardan birindeyse "true" değerini döndürür.
const EnumDescriptor::ReservedRange *
FindReservedRangeContainingNumber(int number) const
Belirtilen sayıda ayrılmış aralık yoksa boş değer döndürür.
int
reserved_name_count() const
Bu mesaj türündeki ayrılmış alan adlarının sayısı.
const std::string &
reserved_name(int index) const
Dizine göre ayrılmış bir ad alır (burada 0 <= index < re Reserve_name_count()). diğer...
bool
IsReservedName(ConstStringParam name) const
Alan adı ayrılmışsa true değerini döndürür.

Kaynak Konumu

bool
GetSourceLocation(SourceLocation * out_location) const
|*out_location|, bu sıralama beyanının tam kapsamının kaynak konumu olarak güncellenir. devamı...

int EnumDescriptor::value_count() const

Bu EnumDescriptor için değer sayısı.

Sıfırdan büyük olduğu garanti edilir.


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

Dizine göre değer alır; burada 0 <= index < value_count().

Bunlar, .proto dosyasında tanımlandığı sırayla döndürülür.


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

Sayıya göre bir değer arar.

Böyle bir değer yoksa boş değer döndürür. Bu sayıya birden fazla değer verilirse tanımlanan ilk değer döndürülür.


const Descriptor *
    EnumDescriptor::containing_type() const

Bu sıralama türü bir mesaj türüne yerleştirilmişse bu mesaj türüdür.

Aksi takdirde nullptr.


const EnumOptions &
    EnumDescriptor::options() const

Bu enum türü için seçenekler alın.

Bunlar, enum tanımına "option foo = 1234;" gibi satırların yerleştirilmesiyle .proto dosyasında belirtilir. İzin verilen seçenekler, descriptor.proto'daki EnumOptions ve bu iletinin kullanılabilir uzantıları tarafından tanımlanır.


bool EnumDescriptor::is_placeholder() const

Bu, bilinmeyen bir sıralama için yer tutucu ise doğru değerini döndürür.

Bu durum yalnızca bu tanımlayıcı, AllowUnknownDependencies() ayarlanmış bir DescriptorPool'dan geliyorsa geçerlidir.


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

Dizine göre ayrılmış bir aralık alır (burada 0 <= index < re Reserve_range_count()).

Bunlar, .proto dosyasında tanımlandığı sırayla döndürülür.


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

Dizine göre ayrılmış bir ad alır (burada 0 <= index < reserve_name_count()).

Reserve_names_ aslında normal nesne dizisi yerine bir işaretçi dizisi olduğundan PROTOBUF_DEFINE_ARRAY_ACCESSOR kullanılamıyor.


bool EnumDescriptor::GetSourceLocation(
        SourceLocation * out_location) const

|*out_location|, bu sıralama beyanının tam kapsamının kaynak konumu olarak güncellenir.

Yanlış değerini döndürür ve konum bilgisi mevcut değilse |*out_location| değişmez.

yapısal EnumDescriptor::ReserveRange

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

Ayrılmış alan numaraları aralığı.

Üyeler

int
start
kapsayıcı
int
end
kapsayıcı

sınıf EnumValueDescriptor

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

Belirli türdeki tek bir sıralama sabitini açıklar.

Belirli bir sıralama değeri için EnumValueDescriptor almak amacıyla türü için EnumDescriptor kullanın ve ardından EnumDescriptor::FindValueByName() ya da EnumDescriptor::FindValueByNumber() kullanın. Kendi tanımlayıcılarınızı oluşturmak için DescriptorPool aracını kullanın.

Üyeler

typedef
EnumValueDescriptorProto Proto
const std::string &
name() const
Bu sıralama sabitinin adı.
int
index() const
Sıralamaların Açıklayıcısı içinde dizin.
int
number() const
Bu sıralama sabitinin sayısal değeri.
const std::string &
full_name() const
Sıralama değerinin tam_adı, enum türünün kardeş simgesidir. devamı...
const FileDescriptor *
file() const
Bu değerin tanımlandığı .proto dosyası. Hiçbir zaman nullptr.
const EnumDescriptor *
type() const
Bu değerin türü. Hiçbir zaman nullptr.
const EnumValueOptions &
options() const
Bu sıralama değeri için seçenekleri alın. devamı...
void
CopyTo(EnumValueDescriptorProto * proto) const
Descriptor::CopyTo() bölümünü inceleyin.
std::string
DebugString() const
Descriptor::DebugString() bölümüne bakın.
std::string
DebugStringWithOptions(const DebugStringOptions & options) const

Kaynak Konumu

bool
GetSourceLocation(SourceLocation * out_location) const
|*out_location|, bu enum değer beyanının tam kapsamının kaynak konumu olarak güncellenir. devamı...

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

Sıralama değerinin tam_adı, enum türünün kardeş simgesidir.

ör.FieldDescriptorProto::TYPE_INT32'nin tam adı aslında "google. protobuf.FieldDescriptorProto.TYPE_INT32" şeklindedir. "google.protobuf.FieldDescriptorProto.Type.TYPE_INT32" DEĞİLDİR. Bu, numaralandırmalar için C++ kapsam kurallarıyla uyumludur.


const EnumValueOptions &
    EnumValueDescriptor::options() const

Bu sıralama değeri için seçenekleri alın.

Bunlar, enum değer tanımından sonra "[[]foo = 1234]" gibi bir metin eklenerek .proto dosyasında belirtilir. İzin verilen seçenekler, descriptor.proto'daki EnumValueOptions ve bu iletinin kullanılabilir uzantıları tarafından tanımlanır.


bool EnumValueDescriptor::GetSourceLocation(
        SourceLocation * out_location) const

|*out_location|, bu enum değer beyanının tam kapsamının kaynak konumu olarak güncellenir.

Yanlış değerini döndürür ve konum bilgisi mevcut değilse |*out_location| değişmez.

sınıf Hizmet Açıklayıcısı

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

Bir TBG hizmetini açıklar.

Kendi tanımlayıcılarınızı oluşturmak için DescriptorPool'u kullanın.

Üyeler

typedef
ServiceDescriptorProto Proto
const std::string &
name() const
Hizmetin adı (kapsamı kapsama dahil değildir).
const std::string &
full_name() const
Hizmetin, dönemlerle ayrılmış tam adı.
int
index() const
Dosyanın hizmet dizisi içindeki bu hizmetin dizini.
const FileDescriptor *
file() const
Bu hizmetin tanımlandığı .proto dosyası. Hiçbir zaman nullptr.
const ServiceOptions &
options() const
Bu hizmet türü için seçenekler sunun. devamı...
int
method_count() const
Bu hizmetin tanımladığı yöntem sayısı.
const MethodDescriptor *
method(int index) const
Dizine göre bir MethodDescriptor alır. 0 <= index < method_count(). diğer...
const MethodDescriptor *
FindMethodByName(ConstStringParam name) const
Ada göre bir MethodDescriptor arayın.
void
CopyTo(ServiceDescriptorProto * proto) const
Descriptor::CopyTo() bölümünü inceleyin.
std::string
DebugString() const
Descriptor::DebugString() bölümüne bakın.
std::string
DebugStringWithOptions(const DebugStringOptions & options) const

Kaynak Konumu

bool
GetSourceLocation(SourceLocation * out_location) const
|*out_location|, bu hizmet beyanının tam kapsamının kaynak konumu olarak güncellenir. devamı...

const ServiceOptions &
    ServiceDescriptor::options() const

Bu hizmet türü için seçenekler sunun.

Bunlar, hizmet tanımına "option foo = 1234;" gibi satırların yerleştirilmesiyle .proto dosyasında belirtilir. İzin verilen seçenekler, descriptor.proto'daki ServiceOptions ve bu iletinin kullanılabilir uzantıları tarafından tanımlanır.


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

Dizine göre bir MethodDescriptor alır. 0 <= index < method_count().

Bunlar, .proto dosyasında tanımlandığı sırayla döndürülür.


bool ServiceDescriptor::GetSourceLocation(
        SourceLocation * out_location) const

|*out_location|, bu hizmet beyanının tam kapsamının kaynak konumu olarak güncellenir.

Yanlış değerini döndürür ve konum bilgisi mevcut değilse |*out_location| değişmez.

class MethodDescriptor

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

Tek bir hizmet yöntemini açıklar.

Bir hizmete ait MethodDescriptor almak için önce ServiceDescriptor'ı alın, ardından ServiceDescriptor::FindMethodByName() yöntemini çağırın. Kendi tanımlayıcılarınızı oluşturmak için DescriptorPool'u kullanın.

Üyeler

typedef
MethodDescriptorProto Proto
const std::string &
name() const
Bu yöntemin adı (kapsam dahil değildir).
const std::string &
full_name() const
Yöntemin noktayla ayrılmış tam nitelikli adı.
int
index() const
Hizmetin Açıklayıcısı içinde dizine ekleyin.
const FileDescriptor *
file() const
Bu yöntemin tanımlandığı .proto dosyası. Hiçbir zaman nullptr.
const ServiceDescriptor *
service() const
Bu yöntemin ait olduğu hizmeti alır. Hiçbir zaman nullptr.
const Descriptor *
input_type() const
Bu yöntemin giriş olarak kabul ettiği protokol mesajı türünü alır.
const Descriptor *
output_type() const
Bu mesajın çıkış olarak ürettiği protokol mesajı türünü alır.
bool
client_streaming() const
Müşterinin birden fazla istek canlı oynatıp oynatmayacağını belirler.
bool
server_streaming() const
Sunucunun birden fazla yanıt verip vermeyeceğini belirler.
const MethodOptions &
options() const
Bu yöntemle ilgili seçenekleri alın. devamı...
void
CopyTo(MethodDescriptorProto * proto) const
Descriptor::CopyTo() bölümünü inceleyin.
std::string
DebugString() const
Descriptor::DebugString() bölümüne bakın.
std::string
DebugStringWithOptions(const DebugStringOptions & options) const

Kaynak Konumu

bool
GetSourceLocation(SourceLocation * out_location) const
|*out_location|, bu yöntem beyanının tüm kapsamını kaynak konumunda günceller. devamı...

const MethodOptions &
    MethodDescriptor::options() const

Bu yöntemle ilgili seçenekleri alın.

Bunlar, .proto dosyasında, bir yöntem beyanından sonra "seçenek köşeli parantezlerinin içine" 1234;" gibi satırların yerleştirilmesiyle belirtilir. İzin verilen seçenekler, descriptor.proto'daki MethodOptions ve bu iletinin kullanılabilir uzantıları tarafından tanımlanır.


bool MethodDescriptor::GetSourceLocation(
        SourceLocation * out_location) const

|*out_location|, bu yöntem beyanının tüm kapsamını kaynak konumunda günceller.

Yanlış değerini döndürür ve konum bilgisi mevcut değilse |*out_location| değişmez.

sınıf FileDescriptor

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

Bir .proto dosyasının tamamını açıklar.

Derlenmiş bir dosyanın FileDescriptor parametresini almak için söz konusu dosyada tanımlı bir öğenin tanımlayıcısını alın ve descriptor->file() işlevini çağırın. Kendi tanımlayıcılarınızı oluşturmak için DescriptorPool öğesini kullanın.

Üyeler

enum
Syntax
Bu dosyanın söz dizimi. devamı...
typedef
FileDescriptorProto Proto
const std::string &
name() const
Kaynak ağacına göre dosya adı. devamı...
const std::string &
package() const
Paket, ör. "google.protobuf.derleyici".
const DescriptorPool *
pool() const
Bu FileDescriptor ve tüm içeriğinin ayrıldığı DescriptorPool. devamı...
int
dependency_count() const
Bu dosya tarafından içe aktarılan dosyaların sayısı.
const FileDescriptor *
dependency(int index) const
İçe aktarılan dosyayı dizine göre alır (burada 0 <= index < dependency_count()). diğer...
int
public_dependency_count() const
Bu dosya herkese açık olarak içe aktarıldı. devamı...
const FileDescriptor *
public_dependency(int index) const
Dizine göre herkese açık olarak içe aktarılan bir dosya alır. Burada, 0 <= endeksi < public_dependency_count() olur. Devamı...
int
weak_dependency_count() const
Zayıf alanlar için içe aktarılan dosyaların sayısı. devamı...
const FileDescriptor *
weak_dependency(int index) const
Dizine göre zayıf bir içe aktarılan dosya alır (burada 0 <= index < weak_dependency_count()). diğer...
int
message_type_count() const
Bu dosyada tanımlanan üst düzey mesaj türlerinin sayısı. devamı...
const Descriptor *
message_type(int index) const
Üst düzey bir mesaj türü alır; burada 0 <= index < message_type_count(). diğer...
int
enum_type_count() const
Bu dosyada tanımlanan üst düzey sıralama türleri. devamı...
const EnumDescriptor *
enum_type(int index) const
Üst düzey enum türü alır; burada 0 <= index < enum_type_count(). diğer...
int
service_count() const
Bu dosyada tanımlanan hizmetlerin sayısı.
const ServiceDescriptor *
service(int index) const
0 <= index < service_count() işleminin yapıldığı bir hizmet alır. diğer...
int
extension_count() const
Dosya kapsamında tanımlanan uzantıların sayısı. devamı...
const FieldDescriptor *
extension(int index) const
Bir uzantının tanımlayıcısını alır (0 <= index < extension_count()). diğer...
const FileOptions &
options() const
Bu dosya için seçenekleri alın. devamı...
Syntax
syntax() const
const Descriptor *
FindMessageTypeByName(ConstStringParam name) const
Ada göre (tam_ad değil) üst düzey mesaj türünü bulun. devamı...
const EnumDescriptor *
FindEnumTypeByName(ConstStringParam name) const
Ada göre üst düzey numaralandırma türü bulun. Bulamazsa nullptr değerini döndürür.
const EnumValueDescriptor *
FindEnumValueByName(ConstStringParam name) const
Ada göre herhangi bir üst düzey sıralamada tanımlanmış bir sıralama değeri bulun. devamı...
const ServiceDescriptor *
FindServiceByName(ConstStringParam name) const
Ada göre bir hizmet tanımı bulun. Bulamazsa nullptr değerini döndürür.
const FieldDescriptor *
FindExtensionByName(ConstStringParam name) const
Ada göre bir üst düzey uzantı tanımı bulun. devamı...
const FieldDescriptor *
FindExtensionByLowercaseName(ConstStringParam name) const
FindExtensionByName() işlevine benzer, ancak küçük harfe göre arama yapar. devamı...
const FieldDescriptor *
FindExtensionByCamelcaseName(ConstStringParam name) const
FindExtensionByName() işlevine benzer, ancak deve içeren ada göre arama yapar. devamı...
void
CopyTo(FileDescriptorProto * proto) const
void
CopySourceCodeInfoTo(FileDescriptorProto * proto) const
Bu FileDescriptor kaynak kodu bilgilerini belirtilen FileDescriptorProto dosyasına yazın. devamı...
void
CopyJsonNameTo(FileDescriptorProto * proto) const
Tüm alanlar için FieldDescriptorProto'nun json_name alanını doldurun. devamı...
std::string
DebugString() const
Descriptor::DebugString() bölümüne bakın.
std::string
DebugStringWithOptions(const DebugStringOptions & options) const
bool
is_placeholder() const
Bu bilinmeyen bir dosya için yer tutucu ise doğru değerini döndürür. devamı...
bool
GetSourceLocation(SourceLocation * out_location) const
|*out_location| bu dosya beyanının tam kapsamını (yani boş yolu) kaynak konuma günceller.
bool
GetSourceLocation(const std::vector< int > & path, SourceLocation * out_location) const
|*out_location|, |path| ile belirtilen beyanın veya beyanın tam kapsamına göre kaynak konumunu günceller. Daha fazla...
static const char *
SyntaxName(Syntax syntax)

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

Bu dosyanın söz dizimi.

SYNtax_UNKNOWN
SİSTEM_PROTO2
SİSTEM_PROTO3

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

Kaynak ağacına göre dosya adı.

ör. "foo/bar/baz.proto"


const DescriptorPool *
    FileDescriptor::pool() const

Bu FileDescriptor ve tüm içeriğinin ayrıldığı DescriptorPool.

Hiçbir zaman nullptr.


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

İçe aktarılan dosyayı dizine göre alır (0 <= index < dependency_count()).

Bunlar, .proto dosyasında tanımlandığı sırayla döndürülür.


int FileDescriptor::public_dependency_count() const

Bu dosya herkese açık olarak içe aktarıldı.

Herkese açık bağımlılık listesi, bağımlılık listesinin bir alt kümesidir.


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

Dizine göre herkese açık olarak içe aktarılan bir dosya alır (burada 0 <= index < public_dependency_count()).

Bunlar, .proto dosyasında tanımlandığı sırayla döndürülür.


int FileDescriptor::weak_dependency_count() const

Zayıf alanlar için içe aktarılan dosyaların sayısı.

Zayıf bağımlılık listesi, bağımlılık listesinin bir alt kümesidir.


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

Dizine göre zayıf bir içe aktarılmış dosya alır; burada 0 <= index < weak_dependency_count().

Bunlar, .proto dosyasında tanımlandığı sırayla döndürülür.


int FileDescriptor::message_type_count() const

Bu dosyada tanımlanan üst düzey mesaj türlerinin sayısı.

(Bu, iç içe yerleştirilmiş türleri içermez.)


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

Üst düzey mesaj türünü alır (0 <= index < message_type_count()).

Bunlar, .proto dosyasında tanımlandığı sırayla döndürülür.


int FileDescriptor::enum_type_count() const

Bu dosyada tanımlanan üst düzey sıralama türleri.

(Bu, iç içe yerleştirilmiş türleri içermez.)


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

Üst düzey enum türü alır; burada 0 <= index < enum_type_count().

Bunlar, .proto dosyasında tanımlandığı sırayla döndürülür.


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

0 <= index < service_count() koşulunda bir hizmet alır.

Bunlar, .proto dosyasında tanımlandığı sırayla döndürülür.


int FileDescriptor::extension_count() const

Dosya kapsamında tanımlanan uzantıların sayısı.

(Buna mesaj türlerinin içine yerleştirilmiş uzantılar dahil değildir.)


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

Bir uzantının tanımlayıcısını alır (0 <= index < extension_count()).

Bunlar, .proto dosyasında tanımlandığı sırayla döndürülür.


const FileOptions &
    FileDescriptor::options() const

Bu dosya için seçenekleri alın.

Bu seçenekler, .proto dosyasında, "option foo = 1234;" gibi satırları diğer tanımların dışında olacak şekilde yerleştirerek belirtilir. İzin verilen seçenekler, descriptor.proto'daki FileOptions ve bu iletinin kullanılabilir uzantıları tarafından tanımlanır.


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

Ada göre (tam_ad değil) üst düzey mesaj türünü bulun.

Bulamazsa nullptr değerini döndürür.


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

Ada göre herhangi bir üst düzey sıralamada tanımlanmış bir sıralama değeri bulun.

Bulamazsa nullptr değerini döndürür.


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

Ada göre bir üst düzey uzantı tanımı bulun.

Bulamazsa nullptr değerini döndürür.


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

FindExtensionByName() işlevine benzer, ancak küçük harfe göre arama yapar.

Descriptor::FindFieldByDownercaseName() öğesine bakın.


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

FindExtensionByName() işlevine benzer, ancak deve içeren ada göre arama yapar.

Descriptor::FindFieldByCamelcaseName() öğesine bakın.


void FileDescriptor::CopyTo(
        FileDescriptorProto * proto) const

Descriptor::CopyTo() bölümünü inceleyin.

Notlar:

  • Bu yöntem nispeten büyük olduğundan ve nadiren gerekli olduğundan kaynak kodu bilgilerini KopyalaMAZ. Aşağıdaki CopySourceCodeInfoTo() bölümüne bakın.

void FileDescriptor::CopySourceCodeInfoTo(
        FileDescriptorProto * proto) const

Bu FileDescriptor kaynak kodu bilgilerini belirtilen FileDescriptorProto dosyasına yazın.

Yukarıdaki CopyTo() bölümüne bakın.


void FileDescriptor::CopyJsonNameTo(
        FileDescriptorProto * proto) const

Tüm alanlar için FieldDescriptorProto'nun json_name alanını doldurun.

Yalnızca CopyTo() işlevinden sonra çağrılabilir.


bool FileDescriptor::is_placeholder() const

Bu bilinmeyen bir dosya için yer tutucu ise doğru değerini döndürür.

Bu durum yalnızca bu tanımlayıcı, AllowUnknownDependencies() ayarlanmış bir DescriptorPool'dan geliyorsa geçerlidir.


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

|*out_location|, |path| ile belirtilen bildirimin veya beyan bölümünün tam kapsamına göre kaynak konum için güncellenir.

Yanlış değerini döndürür ve konum bilgisi mevcut değilse |*out_location| değişmez. (Yol kodlamasının açıklaması için SourceCodeInfo konusuna bakın.)

sınıf DescriptorPool

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

Tanımlayıcılar oluşturmak için kullanılır.

Normalde kendi tanımlayıcılarınızı oluşturmak istemezsiniz. Protokol derleyici tarafından oluşturulan İleti sınıflarında bu sınıflar sizin için oluşturulur. Ancak İleti'yi kendi başınıza uyguluyorsanız veya tamamen rastgele biçimlerde çalışabilen ve bir tür veritabanından yüklemesi gereken bir program yazıyorsanız yapmanız gerekebilir.

Açıklayıcılar, manuel olarak bir araya getirilmesini zorlaştıracak birbirine bağlı çok sayıda veri parçasından oluştuğundan DescriptorPool sınıfı, süreci kolaylaştırmak için sağlanmıştır. Bir FileDescriptorProto (descriptor.proto'da tanımlanır), alıp doğru şekilde birbirine bağlı bir grup açıklayıcıya dönüştürebilir.

DescriptorPool, bellek yönetimine de yardımcı olur. Tanımlayıcılar, statik veriler ve birbirine işaret eden çok sayıda nesneden oluşur. Büyük olasılıkla, bu verileri silmek söz konusu olduğunda tüm verileri tek seferde silmek istersiniz. Aslında, tüm tanımlayıcıları tek seferde silmek istediğiniz birbiriyle ilişkilendiren bir havuz havuzuna sahip olmak sık görülen bir durum değildir. Bu sınıf bu tür bir havuzu temsil eder ve bellek yönetimini sizin için gerçekleştirir.

Ayrıca, bir DescriptorPool içinde tanımlayıcılara ve ada göre uzantı arayabilirsiniz.

Üyeler

DescriptorPool()
Normal ve boş bir DescriptorPool oluşturun.
explicit
DescriptorPool(DescriptorDatabase * fallback_database, ErrorCollector * error_collector = nullptr)
~DescriptorPool()
const FileDescriptor *
FindFileByName(ConstStringParam name) const
Havuzda dosya adına göre bir FileDescriptor bulun. devamı...
const FileDescriptor *
FindFileContainingSymbol(ConstStringParam symbol_name) const
İlgili simgeyi tanımlayan havuzdaki FileDescriptor öğesini bulun. devamı...
static const DescriptorPool *
generated_pool()
Oluşturulan havuza bir işaretçi yerleştirin. devamı...

Tanımlayıcılar aranıyor

Tanımlayıcılar tam nitelikli ada göre bulunur. Bunlar hem üst düzey tanımlayıcılar hem de iç içe yerleştirilmiş tanımlayıcılardır. Bulamazsa nullptr döndürür.
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
Belirli bir türe göre uzantı sayısını bulur. devamı...
const FieldDescriptor *
FindExtensionByPrintableName(const Descriptor * extendee, ConstStringParam printable_name) const
Belirli bir uzantının yazdırılabilir adına göre uzantısını bulur. devamı...
void
FindAllExtensions(const Descriptor * extendee, std::vector< const FieldDescriptor * > * out) const
Uzantı uzantılarını bulur. devamı...

Bina tanımlayıcılar

const FileDescriptor *
BuildFile(const FileDescriptorProto & proto)
FileDescriptorProto'yu gerçek tanımlayıcılara dönüştürüp bu DescriptorPool'a yerleştirin. devamı...
const FileDescriptor *
BuildFileCollectingErrors(const FileDescriptorProto & proto, ErrorCollector * error_collector)
Söz konusu ErrorCollector'a hatalar gönderilmesi haricinde BuildFile() ile aynıdır.
void
AllowUnknownDependencies()
Varsayılan olarak, bir DeDeororProto, DescriptorPool'da (veya varsa DescriptorDatabase'in desteği) bulunmayan türlere ya da diğer dosyalara referanslar içeriyorsa bu bir hatadır. devamı...
void
EnforceWeakDependencies(bool enforce)
Varsayılan olarak zayıf içe aktarmaların eksik olmasına izin verilir. Bu durumda, bağımlılık için bir yer tutucu kullanır ve alanı Boş mesaj alanı olarak dönüştürürüz. devamı...

Dahili öğeler

Bu yöntemler proto2 kitaplığının dışından çağrılmamalıdır.

Bu yöntemler gizli hatalar içerebilir ve gelecekteki bir kitaplık sürümünde kaldırılabilir.

explicit
DescriptorPool(const DescriptorPool * underlay)
Başka bir havuzun üstüne yer paylaşımlı bir DescriptorPool oluşturun. devamı...
void
DisallowEnforceUtf8()
.proto dosyalarında [[]enforce_utf8 = false] değerine izin vermeyin.
void
InternalDontEnforceDependencies()
Yalnızca dahili kullanım için: BuildFile() davranışını, dosyanın resmi olarak bağımlılık olarak bildirmediği diğer dosyalarda beyan edilen mesaj türlerine başvurmasına izin verecek şekilde değiştirir.
void
InternalSetLazilyBuildDependencies()
Yalnızca dahili kullanım için: Dosyanın bağımlılıklarını geç derlemeyi etkinleştirir. devamı...
void
internal_set_underlay(const DescriptorPool * underlay)
Yalnızca şirket içi kullanım içindir.
bool
InternalIsFileLoaded(ConstStringParam filename) const
Yalnızca dahili (birim testi) için: Belirtilen dosya için bir FileDescriptor oluşturulduysa doğru, aksi takdirde yanlış değerini döndürür. devamı...
void
AddUnusedImportTrackFile(ConstStringParam file_name, bool is_error = false)
unused_import_track_files_ dosyasına bir dosya ekleyin. devamı...
void
ClearUnusedImportTrackFiles()
static void
InternalAddGeneratedFile(const void * encoded_file_descriptor, int size)
Oluşturulan sınıflar tarafından create_pool'a tanımlayıcılarını eklemeleri için çağrılır. devamı...
static DescriptorPool *
internal_generated_pool()
Yalnızca dahili kullanım için: Oluşturulan havuza yönlendiren olmayan bir işaretçi alır. devamı...
static DescriptorDatabase *
internal_generated_database()
Yalnızca dahili kullanım için: Oluşturulan açıklayıcı veritabanına konsol dışı bir işaretçi alır. devamı...

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

Havuzda dosya adına göre bir FileDescriptor bulun.

Bulamazsa nullptr değerini döndürür.


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

İlgili simgeyi tanımlayan havuzdaki FileDescriptor öğesini bulun.

Aşağıdaki Finder*ByName() yöntemlerinden herhangi biri başarılı olursa bu yöntemi çağırmak ve sonucun file() yöntemini çağırmak eşdeğerdir. Aksi takdirde nullptr değerini döndürür.


static const DescriptorPool *
    DescriptorPool::generated_pool()

Oluşturulan havuza bir işaretçi yerleştirin.

İkili programda derlenen oluşturulan protokol mesajı sınıfları, bu havuzdaki tanımlayıcılarını ayırır. Bu havuza kendi tanımlayıcılarınızı eklemeyin.


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

Belirli bir türe göre uzantı sayısını bulur.

Başvuru sahibi bu DescriptorPool'un veya yerlerinden birinin üyesi olmalıdır.


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

Belirli bir uzantının yazdırılabilir adına göre uzantısını bulur.

"Yazdırılabilir ad" tanımı için Yazdırılabilir AdForExtension() öğesinin üzerindeki yorumlara bakın. Başvuru sahibi bu DescriptorPool'un veya yerlerinden birinin üyesi olmalıdır. Belirtilen yazdırılabilir ada sahip bilinen bir mesaj uzantısı yoksa boş değer döndürür.


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

Uzantı uzantılarını bulur.

Uzantılar tanımlanmamış bir şekilde eklenir. Yalnızca bu DescriptorPool'da veya yer tutucularından birinde doğrudan tanımlanan uzantılar bulunacaktır: Yedek veritabanında tanımlanan uzantılar, veritabanı uygulamasına bağlı olarak bulunmayabilir.


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

FileDescriptorProto'yu gerçek tanımlayıcılara dönüştürüp bu DescriptorPool'a yerleştirin.

Dosyanın tüm bağımlıları zaten havuzda olmalıdır. Girişle ilgili sorunlar varsa (ör. ileti geçersizse veya bağımlılar eksikse) ortaya çıkan FileDescriptor veya nullptr değerini döndürür. Hatalarla ilgili ayrıntılar GOOGLE_LOG(ERROR) dosyasına yazılır.


void DescriptorPool::AllowUnknownDependencies()

Varsayılan olarak, bir DeDeororProto, DescriptorPool'da (veya varsa DescriptorDatabase'in desteği) bulunmayan türlere ya da diğer dosyalara referanslar içeriyorsa bu bir hatadır.

Ancak, AllowUnknownDependencies() çağrısı yaparsanız bilinmeyen türler ve dosyalar, yer tutucu tanımlayıcılarla (is_placeholder() yöntemi ile tanımlanabilir) değiştirilir. Bu sayede, bağımlı olduğu diğer .proto dosyalarına erişiminiz olmasa bile bazı .proto dosyalarıyla bazı kullanışlı işlemler gerçekleştirebilirsiniz. Ancak bilgilerdeki eksiklikleri doldurmak için bazı buluşsal yöntemler kullanılmalıdır ve bu bulgular, yanlış tanımlayıcılara yol açabilir. Örneğin, DescriptorPool, bilinmeyen bir mesajın veya enum'un yanı sıra içinde bulunduğu paket olup olmadığını tahmin etmeye zorlanabilir. Ayrıca, yer tutucu türleri FinderMessageTypeByName() ve benzer yöntemlerle keşfedilemez. Bu durum, tanımlayıcıya dayalı bazı algoritmaların kafasını karıştırabilir. Genellikle, bu seçeneğin sonuçları son derece dikkatli bir şekilde ele alınmalıdır.


void DescriptorPool::EnforceWeakDependencies(
        bool enforce)

Varsayılan olarak zayıf içe aktarmaların eksik olmasına izin verilir. Bu durumda, bağımlılık için bir yer tutucu kullanır ve alanı Boş mesaj alanı olarak dönüştürürüz.

Ancak ForceWeakDependencies(true) çağrısı yaparsanız DescriptorPool, içe aktarma işlemi bulunamadı hatasını bildirir.


explicit DescriptorPool::DescriptorPool(
        const DescriptorPool * underlay)

Başka bir havuzun üstüne yer paylaşımlı bir DescriptorPool oluşturun.

Yer paylaşımında bir açıklama ararsanız ve bulunmazsa yedek olarak aranır. Yer tutucunun kendi yer paylaşımı varsa bu tekrar aranır ve bu şekilde devam eder. Bu, yer paylaşımında oluşturulan dosyaların gerektiğinde yer paylaşımına ait tanımlayıcılarla çapraz bağlanacağı anlamına da gelir. Yer tutucu, arayanın mülkü olarak kalır ve yeni inşa edilen havuzun ömrü boyunca geçerli olmalıdır.

Örnek: Bir .proto dosyasını, türünü Dinamik Mesaj ile kullanmak için çalışma zamanında ayrıştırmak istediğinizi varsayalım. Bu .proto dosyasının bağımlılıkları olduğunu ancak tüm bağımlıların zaten ikili programda derlenmiş olan işlemler olacağını biliyorsunuz. Kullanım kolaylığı açısından, tüm bu .proto ve çalışma zamanı uygulamalarının gereksiz kopyalarını ayrıştırmak yerine türleri doğrudan generate_pool() işlevinden yüklemek istersiniz. Ancak, ayrıştırılmış türleri doğrudan generate_pool() öğesine eklemek istemezsiniz. Bu işleme izin verilmez ve bu tasarım yine de kötü sonuç verir. Bunun yerine, yalnızca yeni dosyayı eklediğiniz yeni bir DescriptorPool için generate_pool() işlevini kullanabilirsiniz.

UYARI: Yer imleri kullanmak pek çok ustalığa neden olabilir. Bunun yerine, yapmak istediğiniz işlemi DescriptorDatabases ile formülleştirmeye çalışın.


void DescriptorPool::InternalSetLazilyBuildDependencies()

Yalnızca dahili kullanım için: Dosyanın bağımlılıklarını geç derlemeyi etkinleştirir.

Bir dosya tanımlayıcısı için bağımlılık oluşturma işlemini, kesinlikle gerekli olana kadar (örneğin, söz konusu bağımlılığın dosyasında tanımlanan bir alanda message_type() çağrılırken) erteleyin. Bu, bir protokolün veya bağımlılarından birinin hataları varsa işlevsel sorunlara neden olur. Yalnızca derleme oluşturma işlemi tarafından açıklayıcı hiçbir derleme hatası garanti edilmediğinden, testlerde veya bir havuz için açıklayıcı derleme hatalarının eksikliği garanti edilebiliyorsa "generate_pool_" için etkinleştirilmesi gerekir.


bool DescriptorPool::InternalIsFileLoaded(
        ConstStringParam filename) const

Yalnızca dahili (birim testi) için: Belirtilen dosya için bir FileDescriptor oluşturulduysa doğru, aksi takdirde yanlış değerini döndürür.

Tembel tanımlayıcıyı başlatma davranışını test etmek için yararlıdır.


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

unused_import_track_files_ dosyasına bir dosya ekleyin.

DescriptorBuilder, kullanılmayan içe aktarma varsa bu dosyalarla ilgili uyarıları veya hataları günlüğe kaydeder.


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

Oluşturulan sınıflar tarafından create_pool'a tanımlayıcılarını eklemeleri için çağrılır.

Bunu kendi kodunuzda kullanmayın.Dosya adı kalıcı bir dize (ör. dize değişmez değeri) olmalıdır.


static DescriptorPool * DescriptorPool::internal_generated_pool()

Yalnızca dahili kullanım için: Oluşturulan havuza yönlendiren olmayan bir işaretçi alır.

Buna yalnızca statik başlatma zamanı adı verilir, bu nedenle ileti dizisi güvenliği endişe etmez. Hem bir yer paylaşımı hem bir yedek veritabanı varsa, alt katman öncelikli olur.


static DescriptorDatabase *
    DescriptorPool::internal_generated_database()

Yalnızca dahili kullanım için: Oluşturulan açıklayıcı veritabanına konsol dışı bir işaretçi alır.

Yalnızca test amaçlı kullanılır.

class DescriptorPool::ErrorCollector

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

FileDescriptorProto'yu FileDescriptor'a dönüştürürken girişte çeşitli hatalar algılanabilir.

Arayan, bir ErrorCollector uygulayarak bu işlemleri programatik olarak gerçekleştirebilir.

Üyeler

enum
ErrorLocation
Bu sabitler, yapının hangi kısmının kırıldığını belirtir. devamı...
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
FileDescriptorProto'daki bir hatayı bildirir. devamı...
virtual void
AddWarning(const std::string & , const std::string & , const Message * , ErrorLocation , const std::string & )
FileDescriptorProto'da bir uyarı bildirir. devamı...

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

Bu sabitler, yapının hangi kısmının kırıldığını belirtir.

Bu seçenek, örneğin hatayı bir .proto dosyasında tam olarak yeniden eşleştirmek için yararlıdır.

ADdosyaların adını veya simge adını
NUMARAalan veya uzantı aralığı numarası
TÜRalan türü
GENİŞLETalan uzantısı
DEFAULT_VALUEvarsayılan alan değeri
INPUT_TYPEyöntem giriş türü
ÇIKIŞ_TÜRÜyöntem çıkış türü
OPTION_NAMEödevdeki ad
OPTION_VALUEseçenek atamasındaki değer
İÇE AKTARiçe aktarma hatası
DİĞERbaşka bir sorun

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

FileDescriptorProto'daki bir hatayı bildirir.

Sorunun FileDescriptorProto oluşturma işlemini kesintiye uğratması durumunda bu işlevi kullanın.


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

FileDescriptorProto'da bir uyarı bildirir.

Sorun, FileDescriptorProto'nun oluşturulmasını kesintiye uğratmayacaksa bu işlevi kullanın.