Go to the documentation of this file.
33 #include <ruby/version.h>
60 Check_Type(
str, T_STRING);
61 return RSTRING_PTR(
str);
68 return rb_str_new2(s);
76 VALUE def_to_descriptor;
88 rb_gc_mark(
self->def_to_descriptor);
98 "Google::Protobuf::DescriptorPool",
100 .flags = RUBY_TYPED_FREE_IMMEDIATELY,
125 self->def_to_descriptor = Qnil;
128 self->def_to_descriptor = rb_hash_new();
142 VALUE serialized_file_proto) {
144 Check_Type(serialized_file_proto, T_STRING);
149 RSTRING_PTR(serialized_file_proto),
150 RSTRING_LEN(serialized_file_proto),
arena);
152 rb_raise(rb_eArgError,
"Unable to parse FileDescriptorProto");
159 rb_raise(
cTypeError,
"Unable to build file to DescriptorPool: %s",
205 VALUE
klass = rb_define_class_under(
206 module,
"DescriptorPool", rb_cObject);
208 rb_define_method(
klass,
"add_serialized_file",
211 rb_define_singleton_method(
klass,
"generated_pool",
227 VALUE descriptor_pool;
234 rb_gc_mark(
self->klass);
235 rb_gc_mark(
self->descriptor_pool);
239 "Google::Protobuf::Descriptor",
241 .flags = RUBY_TYPED_FREE_IMMEDIATELY,
264 self->descriptor_pool = Qnil;
275 VALUE descriptor_pool, VALUE
ptr) {
279 rb_raise(rb_eRuntimeError,
280 "Descriptor objects may not be created from Ruby.");
283 self->descriptor_pool = descriptor_pool;
395 if (
self->klass == Qnil) {
402 VALUE
klass = rb_define_class_under(
403 module,
"Descriptor", rb_cObject);
413 rb_include_module(
klass, rb_mEnumerable);
424 VALUE descriptor_pool;
431 rb_gc_mark(
self->descriptor_pool);
435 "Google::Protobuf::FileDescriptor",
437 .flags = RUBY_TYPED_FREE_IMMEDIATELY,
449 self->descriptor_pool = Qnil;
450 self->filedef = NULL;
462 VALUE descriptor_pool, VALUE
ptr) {
466 rb_raise(rb_eRuntimeError,
467 "Descriptor objects may not be created from Ruby.");
470 self->descriptor_pool = descriptor_pool;
485 return name == NULL ? Qnil : rb_str_new2(
name);
503 default:
return Qnil;
508 VALUE
klass = rb_define_class_under(
509 module,
"FileDescriptor", rb_cObject);
524 VALUE descriptor_pool;
531 rb_gc_mark(
self->descriptor_pool);
535 "Google::Protobuf::FieldDescriptor",
537 .flags = RUBY_TYPED_FREE_IMMEDIATELY,
556 self->fielddef = NULL;
567 VALUE descriptor_pool, VALUE
ptr) {
571 rb_raise(rb_eRuntimeError,
572 "Descriptor objects may not be created from Ruby.");
575 self->descriptor_pool = descriptor_pool;
595 rb_raise(rb_eArgError,
"Expected symbol for field type.");
598 #define CONVERT(upb, ruby) \
599 if (SYM2ID(type) == rb_intern( # ruby )) { \
600 return UPB_TYPE_ ## upb; \
617 rb_raise(rb_eArgError,
"Unknown field type.");
623 #define CONVERT(upb, ruby) \
624 case UPB_DESCRIPTOR_TYPE_ ## upb : return ID2SYM(rb_intern( # ruby ));
692 return rb_str_new2(json_name);
707 #define CONVERT(upb, ruby) \
708 case UPB_LABEL_ ## upb : return ID2SYM(rb_intern( # ruby ));
791 rb_raise(
cTypeError,
"get method called on wrong message type");
810 rb_raise(
cTypeError,
"has method called on wrong message type");
812 rb_raise(rb_eArgError,
"does not track presence");
830 rb_raise(
cTypeError,
"has method called on wrong message type");
853 rb_raise(
cTypeError,
"set method called on wrong message type");
863 VALUE
klass = rb_define_class_under(
864 module,
"FieldDescriptor", rb_cObject);
889 VALUE descriptor_pool;
896 rb_gc_mark(
self->descriptor_pool);
900 "Google::Protobuf::OneofDescriptor",
902 .flags = RUBY_TYPED_FREE_IMMEDIATELY,
921 self->oneofdef = NULL;
922 self->descriptor_pool = Qnil;
933 VALUE descriptor_pool, VALUE
ptr) {
937 rb_raise(rb_eRuntimeError,
938 "Descriptor objects may not be created from Ruby.");
941 self->descriptor_pool = descriptor_pool;
978 VALUE
klass = rb_define_class_under(
979 module,
"OneofDescriptor", rb_cObject);
984 rb_include_module(
klass, rb_mEnumerable);
996 VALUE descriptor_pool;
1003 rb_gc_mark(
self->module);
1004 rb_gc_mark(
self->descriptor_pool);
1008 "Google::Protobuf::EnumDescriptor",
1010 .flags = RUBY_TYPED_FREE_IMMEDIATELY,
1022 self->enumdef = NULL;
1023 self->module = Qnil;
1024 self->descriptor_pool = Qnil;
1031 return desc->enumdef;
1041 VALUE descriptor_pool, VALUE
ptr) {
1045 rb_raise(rb_eRuntimeError,
1046 "Descriptor objects may not be created from Ruby.");
1049 self->descriptor_pool = descriptor_pool;
1087 const char* name_str= rb_id2name(SYM2ID(
name));
1090 return INT2NUM(val);
1108 return ID2SYM(rb_intern(
name));
1144 if (
self->module == Qnil) {
1147 return self->module;
1151 VALUE
klass = rb_define_class_under(
1152 module,
"EnumDescriptor", rb_cObject);
1161 rb_include_module(
klass, rb_mEnumerable);
1224 return desc->msgdef;
1228 if (argc > skip_arg) {
1229 if (argc > 1 + skip_arg) {
1230 rb_raise(rb_eArgError,
"Expected a maximum of %d arguments.", skip_arg + 1);
1232 return argv[skip_arg];
1239 VALUE* type_class, VALUE* init_arg) {
1245 if (argc < 2 + skip_arg) {
1246 rb_raise(rb_eArgError,
"Expected at least %d arguments for message/enum.",
1250 VALUE
klass = argv[1 + skip_arg];
1252 *type_class =
klass;
1255 rb_raise(rb_eArgError,
1256 "Type class has no descriptor. Please pass a "
1257 "class or enum as returned by the DescriptorPool.");
static VALUE Descriptor_lookup(VALUE _self, VALUE name)
const upb_symtab * DescriptorPool_GetSymtab(VALUE desc_pool_rb)
const upb_filedef * upb_msgdef_file(const upb_msgdef *m)
OPENSSL_EXPORT const ASN1_OBJECT * obj
static VALUE EnumDescriptor_lookup_value(VALUE _self, VALUE number)
static VALUE cEnumDescriptor
upb_msgval Convert_RubyToUpb(VALUE value, const char *name, TypeInfo type_info, upb_arena *arena)
static const char MESSAGE[]
static VALUE Descriptor_initialize(VALUE _self, VALUE cookie, VALUE descriptor_pool, VALUE ptr)
const upb_filedef * upb_symtab_addfile(upb_symtab *s, const google_protobuf_FileDescriptorProto *file_proto, upb_status *status)
struct EnumDescriptor EnumDescriptor
upb_label_t upb_fielddef_label(const upb_fielddef *f)
const upb_oneofdef * oneofdef
bool upb_oneof_done(upb_oneof_iter *iter)
static VALUE FieldDescriptor_get(VALUE _self, VALUE msg_rb)
static VALUE FieldDescriptor_clear(VALUE _self, VALUE msg_rb)
void upb_status_clear(upb_status *status)
void upb_msg_field_next(upb_msg_field_iter *iter)
VALUE Convert_UpbToRuby(upb_msgval upb_val, TypeInfo type_info, VALUE arena)
VALUE TypeInfo_InitArg(int argc, VALUE *argv, int skip_arg)
const char * upb_enum_iter_name(upb_enum_iter *iter)
static VALUE FieldDescriptor_submsg_name(VALUE _self)
static VALUE FileDescriptor_alloc(VALUE klass)
static OneofDescriptor * ruby_to_OneofDescriptor(VALUE val)
bool upb_enum_done(upb_enum_iter *iter)
static FileDescriptor * ruby_to_FileDescriptor(VALUE val)
upb_symtab * upb_symtab_new(void)
static VALUE EnumDescriptor_name(VALUE _self)
static void OneofDescriptor_mark(void *_self)
bool upb_fielddef_issubmsg(const upb_fielddef *f)
const char * upb_enumdef_fullname(const upb_enumdef *e)
static VALUE Descriptor_each(VALUE _self)
upb_syntax_t upb_filedef_syntax(const upb_filedef *f)
static void OneofDescriptor_register(VALUE module)
void upb_symtab_free(upb_symtab *s)
static void FileDescriptor_register(VALUE module)
VALUE Descriptor_DefToClass(const upb_msgdef *m)
static VALUE Descriptor_alloc(VALUE klass)
GRPC_CUSTOM_FIELDDESCRIPTOR FieldDescriptor
const upb_msgdef * msgdef
upb_fielddef * upb_msg_iter_field(const upb_msg_field_iter *iter)
upb_fielddef * upb_oneof_iter_field(const upb_oneof_iter *iter)
static Descriptor * ruby_to_Descriptor(VALUE val)
static VALUE FieldDescriptor_has(VALUE _self, VALUE msg_rb)
void build_class_from_descriptor(PHP_PROTO_HASHTABLE_VALUE php_descriptor TSRMLS_DC)
static VALUE OneofDescriptor_initialize(VALUE _self, VALUE cookie, VALUE descriptor_pool, VALUE ptr)
#define PBRUBY_ASSERT(expr)
static VALUE EnumDescriptor_file_descriptor(VALUE _self)
const upb_filedef * upb_enumdef_file(const upb_enumdef *e)
VALUE MessageOrEnum_GetDescriptor(VALUE klass)
bool upb_msg_has(const upb_msg *msg, const upb_fielddef *f)
static VALUE OneofDescriptor_name(VALUE _self)
bool upb_msg_oneof_done(const upb_msg_oneof_iter *iter)
GRPC_CUSTOM_DESCRIPTORPOOL DescriptorPool
TypeInfo TypeInfo_FromClass(int argc, VALUE *argv, int skip_arg, VALUE *type_class, VALUE *init_arg)
const upb_enumdef * enumdef
static const rb_data_type_t EnumDescriptor_type
static VALUE FileDescriptor_syntax(VALUE _self)
upb_arena * Arena_get(VALUE _arena)
static void FieldDescriptor_register(VALUE module)
const char * upb_fielddef_jsonname(const upb_fielddef *f)
void upb_msg_set(upb_msg *msg, const upb_fielddef *f, upb_msgval val, upb_arena *a)
static VALUE get_def_obj(VALUE _descriptor_pool, const void *ptr, VALUE klass)
UPB_INLINE bool upb_enumdef_ntoiz(const upb_enumdef *e, const char *name, int32_t *num)
grpc_core::ScopedArenaPtr arena
static VALUE Descriptor_lookup_oneof(VALUE _self, VALUE name)
static void FieldDescriptor_mark(void *_self)
const upb_msgdef * upb_fielddef_msgsubdef(const upb_fielddef *f)
static const char * get_str(VALUE str)
static void DescriptorPool_mark(void *_self)
bool upb_msg_field_done(const upb_msg_field_iter *iter)
static VALUE FieldDescriptor_name(VALUE _self)
static const rb_data_type_t DescriptorPool_type
static void DescriptorPool_free(void *_self)
void upb_msg_oneof_begin(upb_msg_oneof_iter *iter, const upb_msgdef *m)
static VALUE get_msgdef_obj(VALUE descriptor_pool, const upb_msgdef *def)
static const rb_data_type_t FieldDescriptor_type
const char * upb_msgdef_fullname(const upb_msgdef *m)
static VALUE EnumDescriptor_initialize(VALUE _self, VALUE cookie, VALUE descriptor_pool, VALUE ptr)
void upb_oneof_next(upb_oneof_iter *iter)
const char * upb_filedef_name(const upb_filedef *f)
const char * upb_status_errmsg(const upb_status *status)
static DescriptorPool * ruby_to_DescriptorPool(VALUE val)
void upb_oneof_begin(upb_oneof_iter *iter, const upb_oneofdef *o)
int32_t upb_enum_iter_number(upb_enum_iter *iter)
static EnumDescriptor * ruby_to_EnumDescriptor(VALUE val)
VALUE build_module_from_enumdesc(VALUE _enumdesc)
static VALUE FieldDescriptor_default(VALUE _self)
static void DescriptorPool_register(VALUE module)
uint32_t upb_fielddef_number(const upb_fielddef *f)
const upb_msgdef * Descriptor_GetMsgDef(VALUE desc_rb)
int def(FILE *source, FILE *dest, int level)
const char * upb_enumdef_iton(const upb_enumdef *def, int32_t num)
static const rb_data_type_t FileDescriptor_type
const upb_symtab * upb_filedef_symtab(const upb_filedef *f)
upb_msg * Message_GetMutable(VALUE msg_rb, const upb_msgdef **m)
static VALUE FieldDescriptor__type(VALUE _self)
static const rb_data_type_t OneofDescriptor_type
static VALUE get_enumdef_obj(VALUE descriptor_pool, const upb_enumdef *def)
static VALUE get_filedef_obj(VALUE descriptor_pool, const upb_filedef *def)
const UPB_INLINE upb_oneofdef * upb_msgdef_ntooz(const upb_msgdef *m, const char *name)
void ObjectCache_Add(const void *key, VALUE val)
static VALUE EnumDescriptor_lookup_name(VALUE _self, VALUE name)
const upb_msgdef * upb_fielddef_containingtype(const upb_fielddef *f)
static VALUE get_fielddef_obj(VALUE descriptor_pool, const upb_fielddef *def)
void upb_enum_begin(upb_enum_iter *i, const upb_enumdef *e)
const upb_oneofdef * upb_msg_iter_oneof(const upb_msg_oneof_iter *iter)
static VALUE DescriptorPool_lookup(VALUE _self, VALUE name)
static VALUE FieldDescriptor_number(VALUE _self)
const upb_enumdef * EnumDescriptor_GetEnumDef(VALUE enum_desc_rb)
static void EnumDescriptor_register(VALUE module)
upb_msgval upb_fielddef_default(const upb_fielddef *f)
void upb_enum_next(upb_enum_iter *iter)
static VALUE OneofDescriptor_alloc(VALUE klass)
static void FileDescriptor_mark(void *_self)
struct OneofDescriptor OneofDescriptor
const upb_enumdef * upb_symtab_lookupenum(const upb_symtab *s, const char *sym)
static TypeInfo TypeInfo_get(const upb_fielddef *f)
void Defs_register(VALUE module)
static void EnumDescriptor_mark(void *_self)
const FieldDescriptor * field
VALUE Message_getfield(VALUE _self, const upb_fielddef *f)
static VALUE FieldDescriptor_alloc(VALUE klass)
upb_fieldtype_t ruby_to_fieldtype(VALUE type)
static FieldDescriptor * ruby_to_FieldDescriptor(VALUE val)
const upb_msg * Message_Get(VALUE msg_rb, const upb_msgdef **m)
bool upb_fielddef_haspresence(const upb_fielddef *f)
void Message_CheckClass(VALUE klass)
#define ALLOC(class_name)
void upb_msg_field_begin(upb_msg_field_iter *iter, const upb_msgdef *m)
void upb_msg_clearfield(upb_msg *msg, const upb_fielddef *f)
const upb_enumdef * upb_fielddef_enumsubdef(const upb_fielddef *f)
const char * upb_oneofdef_name(const upb_oneofdef *o)
UniquePtr< SSL_SESSION > ret
UPB_INLINE google_protobuf_FileDescriptorProto * google_protobuf_FileDescriptorProto_parse(const char *buf, size_t size, upb_Arena *arena)
static VALUE FieldDescriptor_json_name(VALUE _self)
upb_descriptortype_t upb_fielddef_descriptortype(const upb_fielddef *f)
const upb_msgdef * msgdef
static VALUE FieldDescriptor_label(VALUE _self)
const upb_enumdef * enumdef
VALUE Message_GetArena(VALUE msg_rb)
static void Descriptor_register(VALUE module)
static VALUE DescriptorPool_alloc(VALUE klass)
static VALUE FieldDescriptor_set(VALUE _self, VALUE msg_rb, VALUE value)
static VALUE descriptortype_to_ruby(upb_descriptortype_t type)
static VALUE cOneofDescriptor
static VALUE FieldDescriptor_initialize(VALUE _self, VALUE cookie, VALUE descriptor_pool, VALUE ptr)
struct FileDescriptor FileDescriptor
InternalDescriptorPool * pool
void upb_msg_oneof_next(upb_msg_oneof_iter *iter)
VALUE DescriptorPool_add_serialized_file(VALUE _self, VALUE serialized_file_proto)
static VALUE cFileDescriptor
static VALUE Descriptor_msgclass(VALUE _self)
GRPC_CUSTOM_DESCRIPTOR Descriptor
static VALUE Descriptor_name(VALUE _self)
const upb_fielddef * fielddef
static VALUE EnumDescriptor_each(VALUE _self)
PHP_PROTO_OBJECT_FREE_END PHP_PROTO_OBJECT_DTOR_END intern self
bool upb_fielddef_isseq(const upb_fielddef *f)
#define CONVERT(upb, ruby)
static const rb_data_type_t Descriptor_type
static VALUE OneofDescriptor_each(VALUE _self)
static VALUE DescriptorPool_generated_pool(VALUE _self)
struct google_protobuf_FileDescriptorProto google_protobuf_FileDescriptorProto
static VALUE Descriptor_file_descriptor(VALUE _self)
static VALUE FieldDescriptor_subtype(VALUE _self)
VALUE ObjectCache_Get(const void *key)
static VALUE EnumDescriptor_enummodule(VALUE _self)
const upb_msgdef * upb_symtab_lookupmsg(const upb_symtab *s, const char *sym)
static VALUE rb_str_maybe_null(const char *s)
static grpc_slice repeated(char c, size_t length)
static VALUE EnumDescriptor_alloc(VALUE klass)
const UPB_INLINE upb_fielddef * upb_msgdef_ntofz(const upb_msgdef *m, const char *name)
const char * upb_fielddef_name(const upb_fielddef *f)
upb_fieldtype_t upb_fielddef_type(const upb_fielddef *f)
static VALUE FileDescriptor_name(VALUE _self)
static VALUE FileDescriptor_initialize(VALUE _self, VALUE cookie, VALUE descriptor_pool, VALUE ptr)
static VALUE cFieldDescriptor
static void Descriptor_mark(void *_self)
static VALUE Descriptor_each_oneof(VALUE _self)
static VALUE get_oneofdef_obj(VALUE descriptor_pool, const upb_oneofdef *def)
grpc
Author(s):
autogenerated on Fri May 16 2025 02:58:09