/* * call-seq: * EnumDescriptor.new => enum_descriptor * * Creates a new, empty, enum descriptor. Must be added to a pool before the * enum type can be used. The enum type may only be modified prior to adding to * a pool. */ VALUE EnumDescriptor_alloc(VALUE klass) { EnumDescriptor* self = ALLOC(EnumDescriptor); VALUE ret = TypedData_Wrap_Struct(klass, &_EnumDescriptor_type, self); self->enumdef = upb_enumdef_new(&self->enumdef); self->module = Qnil; return ret; }
upb_enumdef *upb_enumdef_dup(const upb_enumdef *e) { upb_enumdef *new_e = upb_enumdef_new(); upb_enum_iter i; for(i = upb_enum_begin(e); !upb_enum_done(i); i = upb_enum_next(e, i)) { assert(upb_enumdef_addval(new_e, upb_enum_iter_name(i), upb_enum_iter_number(i))); } return new_e; }
upb_enumdef *upb_enumdef_dup(const upb_enumdef *e, const void *owner) { upb_enumdef *new_e = upb_enumdef_new(owner); if (!new_e) return NULL; upb_enum_iter i; for(upb_enum_begin(&i, e); !upb_enum_done(&i); upb_enum_next(&i)) { bool success = upb_enumdef_addval( new_e, upb_enum_iter_name(&i),upb_enum_iter_number(&i), NULL); if (!success) { upb_enumdef_unref(new_e, owner); return NULL; } } return new_e; }
static upb_enumdef *upb_enumdef_newnamed(const char *name, void *owner) { upb_enumdef *e = upb_enumdef_new(owner); upb_enumdef_setfullname(e, name, NULL); return e; }
// Handlers for google.protobuf.EnumDescriptorProto. static bool enum_startmsg(void *closure, const void *hd) { UPB_UNUSED(hd); upb_descreader *r = closure; upb_deflist_push(&r->defs, UPB_UPCAST(upb_enumdef_new(&r->defs))); return true; }
// Handlers for google.protobuf.EnumDescriptorProto. static bool enum_startmsg(void *_r) { upb_descreader *r = _r; upb_deflist_push(&r->defs, upb_upcast(upb_enumdef_new(&r->defs))); return true; }