bool upb_fielddef_setsubdefname(upb_fielddef *f, const char *name) { assert(!upb_fielddef_isfrozen(f)); assert(upb_fielddef_hassubdef(f)); release_subdef(f); f->sub.name = upb_strdup(name); f->subdef_is_symbolic = true; return true; }
bool upb_fielddef_setsubdef(upb_fielddef *f, const upb_def *subdef) { assert(!upb_fielddef_isfrozen(f)); assert(upb_fielddef_hassubdef(f)); if (subdef && !upb_subdef_typecheck(f, subdef)) return false; release_subdef(f); f->sub.def = subdef; f->subdef_is_symbolic = false; if (f->sub.def) upb_ref2(f->sub.def, f); return true; }
bool upb_fielddef_setsubdefname(upb_fielddef *f, const char *name, upb_status *s) { assert(!upb_fielddef_isfrozen(f)); if (!upb_fielddef_hassubdef(f)) { upb_status_seterrliteral(s, "field type does not accept a subdef"); return false; } release_subdef(f); f->sub.name = upb_strdup(name); f->subdef_is_symbolic = true; return true; }
bool upb_fielddef_setsubdefname(upb_fielddef *f, const char *name, upb_status *s) { assert(!upb_fielddef_isfrozen(f)); if (!upb_fielddef_hassubdef(f)) { upb_status_seterrmsg(s, "field type does not accept a subdef"); return false; } // TODO: validate name (upb_isident() doesn't quite work atm because this name // may have a leading "."). release_subdef(f); f->sub.name = upb_strdup(name); f->subdef_is_symbolic = true; return true; }