// Creates upb handlers for populating a message. static const upb_handlers *new_fill_handlers(Descriptor* desc, const void* owner) { // TODO(cfallin, haberman): once upb gets a caching/memoization layer for // handlers, reuse subdef handlers so that e.g. if we already parse // B-with-field-of-type-C, we don't have to rebuild the whole hierarchy to // parse A-with-field-of-type-B-with-field-of-type-C. return upb_handlers_newfrozen(desc->msgdef, owner, add_handlers_for_message, NULL); }
const upb_handlers *upb_pb_encoder_newhandlers(const upb_msgdef *m, const void *owner) { return upb_handlers_newfrozen(m, owner, newhandlers_callback, NULL); }
const upb_handlers *upb_textprinter_newhandlers(const upb_msgdef *m, const void *owner) { return upb_handlers_newfrozen(m, owner, &onmreg, NULL); }