Go to the documentation of this file.
38 Check_Type(
str, T_STRING);
39 return RSTRING_PTR(
str);
46 return rb_str_new2(
s);
50 if (upb_def_isfrozen(def)) {
51 rb_raise(rb_eRuntimeError,
52 "Attempt to modify a frozen descriptor. Once descriptors are "
53 "added to the descriptor pool, they may not be modified.");
78 #define DEFINE_CLASS(name, string_name) \
79 VALUE c ## name = Qnil; \
80 const rb_data_type_t _ ## name ## _type = { \
82 { name ## _mark, name ## _free, NULL }, \
84 name* ruby_to_ ## name(VALUE val) { \
86 TypedData_Get_Struct(val, name, &_ ## name ## _type, ret); \
90 #define DEFINE_SELF(type, var, rb_var) \
91 type* var = ruby_to_ ## type(rb_var)
117 return TypedData_Wrap_Struct(
klass, &_DescriptorPool_type,
self);
121 VALUE
klass = rb_define_class_under(
122 module,
"DescriptorPool", rb_cObject);
127 rb_define_singleton_method(
klass,
"generated_pool",
141 "Adding Descriptor to DescriptorPool failed");
149 "Adding EnumDescriptor to DescriptorPool failed");
162 VALUE def_klass = rb_obj_class(def);
168 rb_raise(rb_eArgError,
169 "Second argument must be a Descriptor or EnumDescriptor.");
186 VALUE block = rb_block_proc();
187 rb_funcall_with_block(ctx, rb_intern(
"instance_eval"), 0,
NULL, block);
188 rb_funcall(ctx, rb_intern(
"finalize_to_pool"), 1, _self);
230 rb_gc_mark(
self->klass);
235 upb_msgdef_unref(
self->msgdef, &
self->msgdef);
239 if (
self->fill_handlers) {
240 upb_handlers_unref(
self->fill_handlers, &
self->fill_handlers);
242 if (
self->fill_method) {
243 upb_pbdecodermethod_unref(
self->fill_method, &
self->fill_method);
245 if (
self->json_fill_method) {
246 upb_json_parsermethod_unref(
self->json_fill_method,
247 &
self->json_fill_method);
249 if (
self->pb_serialize_handlers) {
250 upb_handlers_unref(
self->pb_serialize_handlers,
251 &
self->pb_serialize_handlers);
253 if (
self->json_serialize_handlers) {
254 upb_handlers_unref(
self->json_serialize_handlers,
255 &
self->json_serialize_handlers);
257 if (
self->json_serialize_handlers_preserve) {
258 upb_handlers_unref(
self->json_serialize_handlers_preserve,
259 &
self->json_serialize_handlers_preserve);
279 self->fill_handlers =
NULL;
280 self->fill_method =
NULL;
281 self->json_fill_method =
NULL;
282 self->pb_serialize_handlers =
NULL;
283 self->json_serialize_handlers =
NULL;
284 self->json_serialize_handlers_preserve =
NULL;
289 VALUE
klass = rb_define_class_under(
290 module,
"Descriptor", rb_cObject);
303 rb_include_module(
klass, rb_mEnumerable);
321 "Failed to associate message to file descriptor.");
363 "Error setting Descriptor name");
420 "Adding field to Descriptor failed");
443 "Adding oneof to Descriptor failed");
495 if (!upb_def_isfrozen((
const upb_def*)
self->msgdef)) {
496 rb_raise(rb_eRuntimeError,
497 "Cannot fetch message class from a Descriptor not yet in a pool.");
499 if (
self->klass == Qnil) {
516 upb_filedef_unref(
self->filedef, &
self->filedef);
529 VALUE ret = TypedData_Wrap_Struct(
klass, &_FileDescriptor_type,
self);
531 self->filedef = filedef;
536 VALUE
klass = rb_define_class_under(
537 module,
"FileDescriptor", rb_cObject);
561 rb_scan_args(argc, argv,
"11", &name_rb, &
options);
563 if (name_rb != Qnil) {
564 Check_Type(name_rb, T_STRING);
567 "Error setting file name");
571 VALUE syntax = ID2SYM(rb_intern(
"proto3"));
575 if (rb_funcall(
options, rb_intern(
"key?"), 1,
576 ID2SYM(rb_intern(
"syntax"))) == Qtrue) {
577 syntax = rb_hash_lookup(
options, ID2SYM(rb_intern(
"syntax")));
612 default:
return Qnil;
624 Check_Type(syntax_rb, T_SYMBOL);
627 if (SYM2ID(syntax_rb) == rb_intern(
"proto3")) {
629 }
else if (SYM2ID(syntax_rb) == rb_intern(
"proto2")) {
632 rb_raise(rb_eArgError,
"Expected :proto3 or :proto3, received '%s'",
633 rb_id2name(SYM2ID(syntax_rb)));
637 "Error setting file syntax for proto");
652 upb_fielddef_unref(
self->fielddef, &
self->fielddef);
665 VALUE ret = TypedData_Wrap_Struct(
klass, &_FieldDescriptor_type,
self);
673 VALUE
klass = rb_define_class_under(
674 module,
"FieldDescriptor", rb_cObject);
720 "Error setting FieldDescriptor name");
726 rb_raise(rb_eArgError,
"Expected symbol for field type.");
729 #define CONVERT(upb, ruby) \
730 if (SYM2ID(type) == rb_intern( # ruby )) { \
731 return UPB_TYPE_ ## upb; \
748 rb_raise(rb_eArgError,
"Unknown field type.");
754 #define CONVERT(upb, ruby) \
755 case UPB_TYPE_ ## upb : return ID2SYM(rb_intern( # ruby ));
774 rb_raise(rb_eArgError,
"Expected symbol for field type.");
777 #define CONVERT(upb, ruby) \
778 if (SYM2ID(type) == rb_intern( # ruby )) { \
779 return UPB_DESCRIPTOR_TYPE_ ## upb; \
803 rb_raise(rb_eArgError,
"Unknown field type.");
809 #define CONVERT(upb, ruby) \
810 case UPB_DESCRIPTOR_TYPE_ ## upb : return ID2SYM(rb_intern( # ruby ));
899 rb_raise(
cTypeError,
"Expected boolean for default value.");
921 "Error setting default string");
924 rb_raise(rb_eArgError,
"Defaults not supported on field %s.%s",
943 #define CONVERT(upb, ruby) \
944 case UPB_LABEL_ ## upb : return ID2SYM(rb_intern( # ruby ));
967 bool converted =
false;
970 rb_raise(rb_eArgError,
"Expected symbol for field label.");
973 #define CONVERT(upb, ruby) \
974 if (SYM2ID(label) == rb_intern( # ruby )) { \
975 upb_label = UPB_LABEL_ ## upb; \
986 rb_raise(rb_eArgError,
"Unknown field label.");
1016 "Error setting field number");
1052 rb_raise(
cTypeError,
"FieldDescriptor does not have subdef.");
1055 "Error setting submessage name");
1094 rb_raise(
cTypeError,
"get method called on wrong message type");
1111 rb_raise(
cTypeError,
"has method called on wrong message type");
1113 rb_raise(rb_eArgError,
"does not track presence");
1130 rb_raise(
cTypeError,
"has method called on wrong message type");
1150 rb_raise(
cTypeError,
"set method called on wrong message type");
1167 upb_oneofdef_unref(
self->oneofdef, &
self->oneofdef);
1180 VALUE ret = TypedData_Wrap_Struct(
klass, &_OneofDescriptor_type,
self);
1186 VALUE
klass = rb_define_class_under(
1187 module,
"OneofDescriptor", rb_cObject);
1193 rb_include_module(
klass, rb_mEnumerable);
1194 rb_gc_register_address(&cOneofDescriptor);
1195 cOneofDescriptor =
klass;
1221 "Error setting oneof name");
1246 "Adding field to OneofDescriptor failed");
1278 rb_gc_mark(
self->module);
1283 upb_enumdef_unref(
self->enumdef, &
self->enumdef);
1299 self->module = Qnil;
1304 VALUE
klass = rb_define_class_under(
1305 module,
"EnumDescriptor", rb_cObject);
1316 rb_include_module(
klass, rb_mEnumerable);
1333 "Failed to associate enum to file descriptor.");
1373 "Error setting EnumDescriptor name");
1388 const char* name_str = rb_id2name(SYM2ID(
name));
1391 "Error adding value to enum");
1404 const char* name_str= rb_id2name(SYM2ID(
name));
1407 return INT2NUM(
val);
1425 return ID2SYM(rb_intern(
name));
1462 if (!upb_def_isfrozen((
const upb_def*)
self->enumdef)) {
1463 rb_raise(rb_eRuntimeError,
1464 "Cannot fetch enum module from an EnumDescriptor not yet "
1467 if (
self->module == Qnil) {
1470 return self->module;
1478 "Google::Protobuf::Internal::MessageBuilderContext");
1482 rb_gc_mark(
self->descriptor);
1483 rb_gc_mark(
self->builder);
1493 VALUE ret = TypedData_Wrap_Struct(
1494 klass, &_MessageBuilderContext_type,
self);
1495 self->descriptor = Qnil;
1496 self->builder = Qnil;
1501 VALUE
klass = rb_define_class_under(
1502 module,
"MessageBuilderContext", rb_cObject);
1504 rb_define_method(
klass,
"initialize",
1527 self->descriptor =
msgdef;
1528 self->builder = builder;
1538 VALUE name_str = rb_str_new2(rb_id2name(SYM2ID(
name)));
1540 rb_funcall(fielddef_rb, rb_intern(
"label="), 1, ID2SYM(rb_intern(
label)));
1541 rb_funcall(fielddef_rb, rb_intern(
"name="), 1, name_str);
1542 rb_funcall(fielddef_rb, rb_intern(
"type="), 1,
type);
1543 rb_funcall(fielddef_rb, rb_intern(
"number="), 1,
number);
1545 if (type_class != Qnil) {
1546 Check_Type(type_class, T_STRING);
1549 type_class = rb_str_append(rb_str_new2(
"."), type_class);
1550 rb_funcall(fielddef_rb, rb_intern(
"submsg_name="), 1, type_class);
1556 if (rb_funcall(
options, rb_intern(
"key?"), 1,
1557 ID2SYM(rb_intern(
"default"))) == Qtrue) {
1560 rb_raise(rb_eArgError,
"Cannot set :default when using proto3 syntax.");
1566 rb_raise(rb_eArgError,
"Cannot set :default on this kind of field.");
1569 rb_funcall(fielddef_rb, rb_intern(
"default="), 1,
1570 rb_hash_lookup(
options, ID2SYM(rb_intern(
"default"))));
1574 rb_funcall(msgdef_rb, rb_intern(
"add_field"), 1, fielddef_rb);
1591 VALUE type_class,
options = Qnil;
1597 if (argc == 4 && RB_TYPE_P(type_class, T_HASH)) {
1623 VALUE type_class,
options = Qnil;
1629 if (argc == 4 && RB_TYPE_P(type_class, T_HASH)) {
1652 rb_raise(rb_eArgError,
"Expected at least 3 arguments.");
1657 type_class = (argc > 3) ? argv[3] : Qnil;
1678 VALUE mapentry_desc, mapentry_desc_name;
1681 rb_raise(rb_eArgError,
"Expected at least 4 arguments.");
1687 type_class = (argc > 4) ? argv[4] : Qnil;
1692 if (SYM2ID(
key_type) == rb_intern(
"float") ||
1693 SYM2ID(
key_type) == rb_intern(
"double") ||
1694 SYM2ID(
key_type) == rb_intern(
"enum") ||
1695 SYM2ID(
key_type) == rb_intern(
"message")) {
1696 rb_raise(rb_eArgError,
1697 "Cannot add a map field with a float, double, enum, or message "
1703 rb_raise(rb_eArgError,
1704 "Cannot add a native map field using proto2 syntax.");
1709 VALUE file_descriptor_rb =
1710 rb_funcall(
self->descriptor, rb_intern(
"file_descriptor"), 0);
1711 mapentry_desc = rb_class_new_instance(1, &file_descriptor_rb,
cDescriptor);
1712 mapentry_desc_name = rb_funcall(
self->descriptor, rb_intern(
"name"), 0);
1713 mapentry_desc_name = rb_str_cat2(mapentry_desc_name,
"_MapEntry_");
1714 mapentry_desc_name = rb_str_cat2(mapentry_desc_name,
1715 rb_id2name(SYM2ID(
name)));
1743 if (type_class != Qnil) {
1744 VALUE submsg_name = rb_str_new2(
".");
1745 submsg_name = rb_str_append(submsg_name, type_class);
1760 VALUE name_str = rb_str_new2(rb_id2name(SYM2ID(
name)));
1767 submsg_name = rb_str_new2(
".");
1768 submsg_name = rb_str_append(submsg_name, mapentry_desc_name);
1789 VALUE
oneofdef = rb_class_new_instance(0,
NULL, cOneofDescriptor);
1792 VALUE block = rb_block_proc();
1793 VALUE name_str = rb_str_new2(rb_id2name(SYM2ID(
name)));
1794 rb_funcall(
oneofdef, rb_intern(
"name="), 1, name_str);
1795 rb_funcall_with_block(ctx, rb_intern(
"instance_eval"), 0,
NULL, block);
1806 "Google::Protobuf::Internal::OneofBuilderContext");
1810 rb_gc_mark(
self->descriptor);
1811 rb_gc_mark(
self->builder);
1821 VALUE ret = TypedData_Wrap_Struct(
1822 klass, &_OneofBuilderContext_type,
self);
1823 self->descriptor = Qnil;
1824 self->builder = Qnil;
1829 VALUE
klass = rb_define_class_under(
1830 module,
"OneofBuilderContext", rb_cObject);
1832 rb_define_method(
klass,
"initialize",
1852 self->builder = builder;
1869 VALUE type_class,
options = Qnil;
1882 "Google::Protobuf::Internal::EnumBuilderContext");
1886 rb_gc_mark(
self->enumdesc);
1896 VALUE ret = TypedData_Wrap_Struct(
1897 klass, &_EnumBuilderContext_type,
self);
1898 self->enumdesc = Qnil;
1903 VALUE
klass = rb_define_class_under(
1904 module,
"EnumBuilderContext", rb_cObject);
1906 rb_define_method(
klass,
"initialize",
1950 "Google::Protobuf::Internal::FileBuilderContext");
1954 rb_gc_mark(
self->pending_list);
1955 rb_gc_mark(
self->file_descriptor);
1956 rb_gc_mark(
self->builder);
1966 VALUE ret = TypedData_Wrap_Struct(
klass, &_FileBuilderContext_type,
self);
1967 self->pending_list = Qnil;
1968 self->file_descriptor = Qnil;
1969 self->builder = Qnil;
1974 VALUE
klass = rb_define_class_under(module,
"FileBuilderContext", rb_cObject);
1994 self->pending_list = rb_ary_new();
1995 self->file_descriptor = file_descriptor;
1996 self->builder = builder;
2016 VALUE block = rb_block_proc();
2017 rb_funcall(
msgdef, rb_intern(
"name="), 1,
name);
2018 rb_funcall_with_block(ctx, rb_intern(
"instance_eval"), 0,
NULL, block);
2038 VALUE block = rb_block_proc();
2040 rb_funcall_with_block(ctx, rb_intern(
"instance_eval"), 0,
NULL, block);
2047 return self->pending_list;
2058 rb_gc_mark(
self->pending_list);
2059 rb_gc_mark(
self->default_file_descriptor);
2078 VALUE ret = TypedData_Wrap_Struct(
2079 klass, &_Builder_type,
self);
2080 self->pending_list = Qnil;
2082 self->default_file_descriptor = Qnil;
2087 VALUE
klass = rb_define_class_under(module,
"Builder", rb_cObject);
2106 self->pending_list = rb_ary_new();
2107 VALUE file_name = Qnil;
2108 self->default_file_descriptor =
2126 VALUE file_descriptor = rb_class_new_instance(argc, argv,
cFileDescriptor);
2127 VALUE
args[2] = { file_descriptor, _self };
2129 VALUE block = rb_block_proc();
2130 rb_funcall_with_block(ctx, rb_intern(
"instance_eval"), 0,
NULL, block);
2132 rb_ary_concat(
self->pending_list,
2151 rb_class_new_instance(1, &
self->default_file_descriptor,
cDescriptor);
2154 VALUE block = rb_block_proc();
2155 rb_funcall(
msgdef, rb_intern(
"name="), 1,
name);
2156 rb_funcall_with_block(ctx, rb_intern(
"instance_eval"), 0,
NULL, block);
2178 VALUE block = rb_block_proc();
2180 rb_funcall_with_block(ctx, rb_intern(
"instance_eval"), 0,
NULL, block);
2193 rb_raise(
cTypeError,
"Required fields are unsupported in proto3.");
2204 "Enum definition does not contain a value for '0'.");
2229 for (
int i = 0;
i < RARRAY_LEN(
self->pending_list);
i++) {
2230 VALUE def_rb = rb_ary_entry(
self->pending_list,
i);
2247 RARRAY_LEN(
self->pending_list),
NULL, &status),
2248 "Unable to add defs to DescriptorPool");
2250 for (
int i = 0;
i < RARRAY_LEN(
self->pending_list);
i++) {
2251 VALUE def_rb = rb_ary_entry(
self->pending_list,
i);
2255 self->pending_list = rb_ary_new();
int32_t upb_enum_iter_number(upb_enum_iter *iter)
const UPB_INLINE upb_oneofdef * upb_msgdef_ntooz(const upb_msgdef *m, const char *name)
VALUE cMessageBuilderContext
const upb_msgdef * msgdef
const upb_oneofdef * oneofdef
DescriptorPool * ruby_to_DescriptorPool(VALUE value)
upb_descriptortype_t ruby_to_descriptortype(VALUE type)
const upb_oneofdef * upb_msg_iter_oneof(const upb_msg_oneof_iter *iter)
VALUE MessageBuilderContext_map(int argc, VALUE *argv, VALUE _self)
void upb_enum_next(upb_enum_iter *iter)
VALUE EnumDescriptor_name_set(VALUE _self, VALUE str)
GLuint const GLchar * name
void upb_fielddef_setdescriptortype(upb_fielddef *f, int type)
bool upb_msgdef_addoneof(upb_msgdef *m, upb_oneofdef *o, const void *ref_donor, upb_status *s)
void EnumBuilderContext_register(VALUE module)
void upb_msgdef_setmapentry(upb_msgdef *m, bool map_entry)
VALUE Descriptor_lookup_oneof(VALUE _self, VALUE name)
void upb_fielddef_setdefaultdouble(upb_fielddef *f, double value)
FieldDescriptor * ruby_to_FieldDescriptor(VALUE value)
VALUE OneofDescriptor_alloc(VALUE klass)
upb_filedef * upb_filedef_new(const void *owner)
upb_msgdef * upb_msgdef_new(const void *owner)
static int16_t lookup[CNT]
upb_enumdef * upb_enumdef_new(const void *owner)
VALUE EnumDescriptor_alloc(VALUE klass)
static VALUE rb_str_maybe_null(const char *s)
#define DEFINE_CLASS(name, string_name)
VALUE FieldDescriptor_label_set(VALUE _self, VALUE label)
bool upb_filedef_setsyntax(upb_filedef *f, upb_syntax_t syntax, upb_status *s)
#define CHECK_UPB(code, msg)
void OneofBuilderContext_mark(void *_self)
upb_syntax_t upb_filedef_syntax(const upb_filedef *f)
OneofDescriptor * ruby_to_OneofDescriptor(VALUE value)
zval * layout_get(MessageLayout *layout, const void *storage, const upb_fielddef *field, CACHED_VALUE *cache TSRMLS_DC)
const upb_fielddef * fielddef
const upb_fielddef * fielddef
VALUE FileBuilderContext_add_message(VALUE _self, VALUE name)
VALUE FieldDescriptor_subtype(VALUE _self)
VALUE EnumBuilderContext_value(VALUE _self, VALUE name, VALUE number)
VALUE MessageBuilderContext_alloc(VALUE klass)
void FieldDescriptor_free(void *_self)
upb_descriptortype_t upb_fielddef_descriptortype(const upb_fielddef *f)
const char * upb_enumdef_iton(const upb_enumdef *def, int32_t num)
VALUE FieldDescriptor_label(VALUE _self)
void upb_msg_field_begin(upb_msg_field_iter *iter, const upb_msgdef *m)
VALUE Builder_finalize_to_pool(VALUE _self, VALUE pool_rb)
FileDescriptor * ruby_to_FileDescriptor(VALUE value)
const upb_enumdef * enumdef
VALUE Descriptor_name(VALUE _self)
VALUE FieldDescriptor_type_set(VALUE _self, VALUE type)
VALUE Descriptor_add_field(VALUE _self, VALUE obj)
VALUE EnumDescriptor_lookup_name(VALUE _self, VALUE name)
bool upb_fielddef_issubmsg(const upb_fielddef *f)
const rb_data_type_t _EnumDescriptor_type
void layout_set(MessageLayout *layout, MessageHeader *header, const upb_fielddef *field, zval *val TSRMLS_DC)
PHP_PROTO_OBJECT_FREE_END PHP_PROTO_OBJECT_DTOR_END intern self
void FileDescriptor_mark(void *_self)
void upb_fielddef_setdefaultint32(upb_fielddef *f, int32_t value)
void OneofDescriptor_register(VALUE module)
VALUE FileDescriptor_syntax_set(VALUE _self, VALUE syntax_rb)
VALUE EnumDescriptor_enummodule(VALUE _self)
GLuint GLsizei const GLchar * label
bool upb_enumdef_addval(upb_enumdef *e, const char *name, int32_t num, upb_status *status)
void DescriptorPool_mark(void *_self)
void EnumDescriptor_mark(void *_self)
const upb_def * upb_fielddef_subdef(const upb_fielddef *f)
const upb_filedef * upb_def_file(const upb_def *d)
Descriptor * ruby_to_Descriptor(VALUE value)
void Builder_register(VALUE module)
void upb_fielddef_setdefaultint64(upb_fielddef *f, int64_t value)
VALUE Builder_add_message(VALUE _self, VALUE name)
VALUE layout_get_default(const upb_fielddef *field)
bool upb_fielddef_typeisset(const upb_fielddef *f)
VALUE OneofDescriptor_add_field(VALUE _self, VALUE obj)
void OneofDescriptor_mark(void *_self)
void * Message_data(void *msg)
VALUE FieldDescriptor_get(VALUE _self, VALUE msg_rb)
void FileBuilderContext_free(void *_self)
rb_data_type_t Message_type
void upb_fielddef_setdefaultcstr(upb_fielddef *f, const char *str, upb_status *s)
VALUE cFileBuilderContext
upb_symtab * upb_symtab_new()
VALUE DescriptorPool_lookup(VALUE _self, VALUE name)
void upb_fielddef_setdefaultuint32(upb_fielddef *f, uint32_t value)
VALUE FieldDescriptor_type(VALUE _self)
UPB_INLINE bool upb_filedef_addmsg(upb_filedef *f, upb_msgdef *m, const void *ref_donor, upb_status *s)
bool upb_symtab_add(upb_symtab *s, upb_def *const *defs, size_t n, void *ref_donor, upb_status *status)
VALUE Builder_add_file(int argc, VALUE *argv, VALUE _self)
VALUE OneofBuilderContext_alloc(VALUE klass)
bool upb_filedef_setname(upb_filedef *f, const char *name, upb_status *s)
const UPB_INLINE upb_fielddef * upb_msgdef_ntofz(const upb_msgdef *m, const char *name)
void OneofBuilderContext_register(VALUE module)
void EnumDescriptor_register(VALUE module)
Builder * ruby_to_Builder(VALUE value)
bool upb_enumdef_setfullname(upb_enumdef *e, const char *fullname, upb_status *s)
void upb_fielddef_setdefaultfloat(upb_fielddef *f, float value)
#define ALLOC(class_name)
VALUE MessageBuilderContext_initialize(VALUE _self, VALUE msgdef, VALUE builder)
void EnumBuilderContext_mark(void *_self)
void EnumBuilderContext_free(void *_self)
void upb_fielddef_setlabel(upb_fielddef *f, upb_label_t label)
void upb_fielddef_setdefaultuint64(upb_fielddef *f, uint64_t value)
const char * upb_fielddef_subdefname(const upb_fielddef *f)
static void proto3_validate_enumdef(const upb_enumdef *enumdef)
void DescriptorPool_free(void *_self)
VALUE FieldDescriptor_number(VALUE _self)
VALUE FieldDescriptor_default(VALUE _self)
VALUE Descriptor_name_set(VALUE _self, VALUE str)
VALUE cOneofBuilderContext
const rb_data_type_t _Descriptor_type
GLsizei GLsizei GLuint * obj
static void proto3_validate_msgdef(const upb_msgdef *msgdef)
static const char * get_str(VALUE str)
static void add_enumdesc_to_pool(DescriptorPool *self, EnumDescriptor *enumdesc)
const char * upb_fielddef_fullname(const upb_fielddef *f)
VALUE cEnumBuilderContext
VALUE FieldDescriptor_number_set(VALUE _self, VALUE number)
static upb_oneofdef * check_oneof_notfrozen(const upb_oneofdef *def)
VALUE MessageBuilderContext_oneof(VALUE _self, VALUE name)
VALUE EnumDescriptor_name(VALUE _self)
void MessageBuilderContext_register(VALUE module)
void FieldDescriptor_mark(void *_self)
void upb_fielddef_setpacked(upb_fielddef *f, bool packed)
const upb_msgdef * msgdef
VALUE Descriptor_add_oneof(VALUE _self, VALUE obj)
VALUE Descriptor_lookup(VALUE _self, VALUE name)
VALUE OneofDescriptor_name(VALUE _self)
void Builder_free(void *_self)
void free_layout(MessageLayout *layout)
static VALUE msgdef_add_field(VALUE msgdef_rb, const char *label, VALUE name, VALUE type, VALUE number, VALUE type_class, VALUE options)
void Builder_mark(void *_self)
void upb_msg_oneof_begin(upb_msg_oneof_iter *iter, const upb_msgdef *m)
VALUE build_module_from_enumdesc(EnumDescriptor *enumdesc)
void add_def_obj(const void *def, PHP_PROTO_HASHTABLE_VALUE value)
static upb_msgdef * check_msg_notfrozen(const upb_msgdef *def)
const upb_def * upb_symtab_lookup(const upb_symtab *s, const char *sym)
const char * upb_enumdef_fullname(const upb_enumdef *e)
void layout_clear(MessageLayout *layout, const void *storage, const upb_fielddef *field)
VALUE DescriptorPool_alloc(VALUE klass)
upb_fielddef * upb_fielddef_new(const void *o)
VALUE MessageBuilderContext_required(int argc, VALUE *argv, VALUE _self)
const char * upb_oneofdef_name(const upb_oneofdef *o)
static void add_descriptor_to_pool(DescriptorPool *self, Descriptor *descriptor)
const char * upb_filedef_name(const upb_filedef *f)
VALUE Builder_initialize(VALUE _self)
const char * upb_fielddef_name(const upb_fielddef *f)
VALUE FieldDescriptor_alloc(VALUE klass)
void FileDescriptor_register(VALUE module)
void Descriptor_free(void *_self)
const upb_oneofdef * oneofdef
VALUE FieldDescriptor_clear(VALUE _self, VALUE msg_rb)
VALUE OneofDescriptor_each(VALUE _self, VALUE field)
VALUE FileBuilderContext_pending_descriptors(VALUE _self)
VALUE layout_has(MessageLayout *layout, const void *storage, const upb_fielddef *field)
VALUE OneofDescriptor_name_set(VALUE _self, VALUE value)
VALUE FileDescriptor_syntax(VALUE _self)
VALUE EnumBuilderContext_initialize(VALUE _self, VALUE enumdef)
void FileBuilderContext_mark(void *_self)
bool upb_msg_oneof_done(const upb_msg_oneof_iter *iter)
VALUE DescriptorPool_generated_pool(VALUE _self)
static upb_enumdef * check_enum_notfrozen(const upb_enumdef *def)
const FieldDescriptor * field
VALUE EnumDescriptor_initialize(VALUE _self, VALUE file_descriptor_rb)
const SETUP_TEARDOWN_TESTCONTEXT char * key
bool upb_msgdef_addfield(upb_msgdef *m, upb_fielddef *f, const void *ref_donor, upb_status *s)
void MessageBuilderContext_mark(void *_self)
#define DEFINE_SELF(type, var, rb_var)
bool upb_fielddef_setnumber(upb_fielddef *f, uint32_t number, upb_status *s)
InternalDescriptorPool * pool
UPB_INLINE bool upb_enumdef_ntoiz(const upb_enumdef *e, const char *name, int32_t *num)
VALUE DescriptorPool_add(VALUE _self, VALUE def)
VALUE FileDescriptor_alloc(VALUE klass)
VALUE EnumDescriptor_add_value(VALUE _self, VALUE name, VALUE number)
void upb_oneof_next(upb_oneof_iter *iter)
upb_fieldtype_t upb_fielddef_type(const upb_fielddef *f)
upb_fielddef * upb_msg_iter_field(const upb_msg_field_iter *iter)
void upb_symtab_free(upb_symtab *s)
bool upb_fielddef_setname(upb_fielddef *f, const char *name, upb_status *s)
VALUE OneofBuilderContext_optional(int argc, VALUE *argv, VALUE _self)
bool upb_enum_done(upb_enum_iter *iter)
void FileDescriptor_free(void *_self)
upb_fielddef * upb_oneof_iter_field(const upb_oneof_iter *iter)
VALUE Descriptor_each(VALUE _self)
void upb_oneof_begin(upb_oneof_iter *iter, const upb_oneofdef *o)
void Descriptor_mark(void *_self)
void Descriptor_register(VALUE module)
void build_class_from_descriptor(PHP_PROTO_HASHTABLE_VALUE php_descriptor TSRMLS_DC)
bool upb_msgdef_setfullname(upb_msgdef *m, const char *fullname, upb_status *s)
VALUE Descriptor_alloc(VALUE klass)
VALUE EnumDescriptor_file_descriptor(VALUE _self)
void upb_msg_field_next(upb_msg_field_iter *iter)
PHP_PROTO_HASHTABLE_VALUE get_def_obj(const void *def)
EnumDescriptor * ruby_to_EnumDescriptor(VALUE value)
VALUE Builder_alloc(VALUE klass)
static upb_def * check_notfrozen(const upb_def *def)
VALUE FileDescriptor_initialize(int argc, VALUE *argv, VALUE _self)
VALUE fieldtype_to_ruby(upb_fieldtype_t type)
bool upb_fielddef_hassubdef(const upb_fielddef *f)
VALUE FieldDescriptor_set(VALUE _self, VALUE msg_rb, VALUE value)
zend_class_entry * value_type
VALUE Descriptor_msgclass(VALUE _self)
void MessageBuilderContext_free(void *_self)
static VALUE enumdef_add_value(VALUE enumdef, VALUE name, VALUE number)
const char * upb_enum_iter_name(upb_enum_iter *iter)
bool upb_msg_field_done(const upb_msg_field_iter *iter)
VALUE Descriptor_each_oneof(VALUE _self)
VALUE FileBuilderContext_alloc(VALUE klass)
VALUE FieldDescriptor_name_set(VALUE _self, VALUE str)
void upb_enum_begin(upb_enum_iter *i, const upb_enumdef *e)
VALUE descriptortype_to_ruby(upb_descriptortype_t type)
VALUE Descriptor_initialize(VALUE _self, VALUE file_descriptor_rb)
upb_oneofdef * upb_oneofdef_new(const void *owner)
uint32_t upb_fielddef_number(const upb_fielddef *f)
VALUE FieldDescriptor_default_set(VALUE _self, VALUE default_value)
VALUE Builder_add_enum(VALUE _self, VALUE name)
VALUE FileDescriptor_name(VALUE _self)
upb_label_t upb_fielddef_label(const upb_fielddef *f)
void upb_fielddef_setdefaultbool(upb_fielddef *f, bool value)
bool upb_oneof_done(upb_oneof_iter *iter)
VALUE FieldDescriptor_submsg_name_set(VALUE _self, VALUE value)
VALUE FieldDescriptor_has(VALUE _self, VALUE msg_rb)
void DescriptorPool_register(VALUE module)
void OneofDescriptor_free(void *_self)
VALUE EnumBuilderContext_alloc(VALUE klass)
bool upb_oneofdef_addfield(upb_oneofdef *o, upb_fielddef *f, const void *ref_donor, upb_status *s)
bool upb_oneofdef_setname(upb_oneofdef *o, const char *name, upb_status *s)
#define CONVERT(upb, ruby)
bool upb_fielddef_setsubdefname(upb_fielddef *f, const char *name, upb_status *s)
VALUE MessageBuilderContext_optional(int argc, VALUE *argv, VALUE _self)
VALUE EnumDescriptor_each(VALUE _self)
static upb_fielddef * check_field_notfrozen(const upb_fielddef *def)
void FieldDescriptor_register(VALUE module)
VALUE MessageBuilderContext_repeated(int argc, VALUE *argv, VALUE _self)
GLsizei const GLfloat * value
VALUE FieldDescriptor_name(VALUE _self)
VALUE FileBuilderContext_add_enum(VALUE _self, VALUE name)
void OneofBuilderContext_free(void *_self)
VALUE FieldDescriptor_submsg_name(VALUE _self)
void EnumDescriptor_free(void *_self)
VALUE EnumDescriptor_lookup_value(VALUE _self, VALUE number)
upb_fieldtype_t ruby_to_fieldtype(VALUE type)
VALUE OneofBuilderContext_initialize(VALUE _self, VALUE oneofdef, VALUE builder)
void upb_msg_oneof_next(upb_msg_oneof_iter *iter)
upb_syntax_t upb_msgdef_syntax(const upb_msgdef *m)
const upb_enumdef * enumdef
const upb_msgdef * upb_fielddef_containingtype(const upb_fielddef *f)
void FileBuilderContext_register(VALUE module)
const upb_filedef * filedef
const char * upb_msgdef_fullname(const upb_msgdef *m)
static uint32_t * group(tarjan *t, upb_refcounted *r)
VALUE FileBuilderContext_initialize(VALUE _self, VALUE file_descriptor, VALUE builder)
VALUE DescriptorPool_build(int argc, VALUE *argv, VALUE _self)
VALUE Descriptor_file_descriptor(VALUE _self)
GLenum GLuint GLenum GLsizei const GLchar * message
bool upb_fielddef_haspresence(const upb_fielddef *f)
UPB_INLINE bool upb_filedef_addenum(upb_filedef *f, upb_enumdef *e, const void *ref_donor, upb_status *s)
libaditof
Author(s):
autogenerated on Wed May 21 2025 02:06:49