#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_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 | Bilinen bir tür değil. |
WELLKNOWNTYPE_DOUBLEVALUE | Sarmalayıcı türleri. google.protobuf.Çift Değer |
WELLKNOWNTYPE_FLOATVALUE | google.protobuf.KayanDeğer |
WELLKNOWNTYPE_INT64VALUE | google.protobuf.Int64Değer |
WELLKNOWNTYPE_UINT64VALUE | google.protobuf.UInt64Değer |
WELLKNOWNTYPE_INT32VALUE | google.protobuf.Int32Değer |
WELLKNOWNTYPE_UINT32VALUE | google.protobuf.UInt32Değer |
WELLKNOWNTYPE_STRINGVALUE | google.protobuf.DizeDeğeri |
WELLKNOWNTYPE_BYTESVALUE | google.protobuf.BytesValue |
WELLKNOWNTYPE_BOOLVALUE | google.protobuf.BoolDeğer |
ELLER | İyi bilinen diğer türler. google.protobuf. |
WELLKNOWNTYPE_FIELDMASK | google.protobuf.AlanMaskesi |
WELLKNOWNTYPE_DURATION | google.protobuf.Süre |
WELLKNOWNTYPE_TIMESTAMP | google.protobuf.Zaman Damgası |
WELLKNOWNTYPE_VALUE | google.protobuf.Değer |
WELLKNOWNTYPE_LISTVALUE | google.protobuf.ListeDeğeri |
WELLKNOWNTYPE_STRUCT | google.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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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ı.
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
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
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
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
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
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
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:
- İçerdiği kapsam için Descriptor veya FileDescriptor aracını alın, ardından Descriptor::FindExtensionByName() veya FileDescriptor::FindExtensionByName() yöntemini çağırın.
- DescriptorPool göz önünde bulundurulduğunda DescriptorPool::FindExtensionByNumber() veya DescriptorPool::FindExtensionByPrintableName() işlevini çağırın. Kendi tanımlayıcılarınızı oluşturmak için DescriptorPool'u kullanı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 |
const std::string & | camelcase_name() const |
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 |
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 Descriptor::DebugStringWithOptions() öğesine bakın. |
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
}
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_ÇİFT | iki bayt, tam olarak sekiz bayttır. |
TÜR_FLOAT | telin ü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_UINT64 | uint64, 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_FIXED64 | uint64, kablo üzerinde tam sekiz bayt. |
TÜR_FIXED32 | uint32, telde tam olarak dört bayt var. |
TÜR_BOOL | Hadi, kabloyu dizmek. |
TYPE_STRING | UTF-8 metni. |
TÜR_GRUP | Etiketle ayrılmış ileti. Kullanımdan kaldırıldı. |
TYPE_MESSAGE | Uzunluk bilgisi olan mesaj. |
TYPE_BYTES | Rastgele bayt dizisi. |
TYPE_UINT32 | uint32, teli üstünde |
TÜR_ENUM | Numara, kablonun tepesinde. |
TÜR_SFIXED32 | int32, telde tam olarak dört bayt |
TÜR_SFIXED64 | int64, kablo üzerinde tam sekiz bayt |
TÜR_SINT32 | int32, Kablo üzerinde ZigZag kodlu varyasyon |
TÜR_SINT64 | int64, Kablo üzerinde ZigZag kodlu varyasyon |
MAKS. TÜR | Tü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
}
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_INT32 | TYPE_INT32, TYPE_SINT32, TYPE_SFIXED32'dir. |
CPPTYPE_INT64 | TYPE_INT64, TYPE_SINT64, TYPE_SFIXED64. |
CPPTYPE_UINT32 | TYPE_UINT32, TYPE_FIXED32. |
CPPTYPE_UINT64 | TYPE_UINT64, TYPE_FIXED64. |
PBMTYPE_ÇİFT | TYPE_DOUBLE. |
CPPTYPE_FLOAT | TYPE_FLOAT. |
CPPTYPE_BOOL | TYPE_BOOL. |
CPPTYPE_ENUM | TYPE_ENUM. |
CPPTYPE_STRING | TYPE_STRING, TYPE_BYTES. |
CPPTYPE_MESSAGE | TYPE_MESSAGE, TYPE_GROUP. |
MAKS. PBM | CppType 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
}
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ĞLI | isteğe bağlı |
ETİKET_GEREKLİ | zorunlu |
ETİKET_YAPILANDIRILDI | tekrarlanan |
MAKS.ETİKET | Etikete 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
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
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
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
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
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
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
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
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
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
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
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 Descriptor::DebugStringWithOptions() öğesine bakın. |
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
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
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 Descriptor::DebugStringWithOptions() öğesine bakın. |
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
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
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
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
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
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
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
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 Descriptor::DebugStringWithOptions() öğesine bakın. |
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
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
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
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 |
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 Descriptor::DebugStringWithOptions() öğesine bakın. |
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
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
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
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 Descriptor::DebugStringWithOptions() öğesine bakın. |
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
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
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 |
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 Descriptor::CopyTo() konusuna bakın. diğer... |
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 Descriptor::DebugStringWithOptions() öğesine bakın. |
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
}
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
FileDescriptor::name() const
Kaynak ağacına göre dosya adı.
ör. "foo/bar/baz.proto"
const DescriptorPool *
FileDescriptor::pool() const
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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ıyorTanı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 öğelerBu 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
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
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()
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
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
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
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)
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)
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)
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
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)
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)
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()
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
}
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.
AD | dosyaların adını veya simge adını |
NUMARA | alan veya uzantı aralığı numarası |
TÜR | alan türü |
GENİŞLET | alan uzantısı |
DEFAULT_VALUE | varsayılan alan değeri |
INPUT_TYPE | yöntem giriş türü |
ÇIKIŞ_TÜRÜ | yöntem çıkış türü |
OPTION_NAME | ödevdeki ad |
OPTION_VALUE | seçenek atamasındaki değer |
İÇE AKTAR | içe aktarma hatası |
DİĞER | baş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
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 & )
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.