Exemplo n.º 1
0
static upb_pbdecodermethod *newmethod(const upb_handlers *dest_handlers,
                                      mgroup *group) {
  static const struct upb_refcounted_vtbl vtbl = {visitmethod, freemethod};
  upb_pbdecodermethod *ret = malloc(sizeof(*ret));
  upb_refcounted_init(UPB_UPCAST(ret), &vtbl, &ret);
  upb_byteshandler_init(&ret->input_handler_);

  // The method references the group and vice-versa, in a circular reference.
  upb_ref2(ret, group);
  upb_ref2(group, ret);
  upb_inttable_insertptr(&group->methods, dest_handlers, upb_value_ptr(ret));
  upb_refcounted_unref(UPB_UPCAST(ret), &ret);

  ret->group = UPB_UPCAST(group);
  ret->dest_handlers_ = dest_handlers;
  ret->is_native_ = false;  // If we JIT, it will update this later.
  upb_inttable_init(&ret->dispatch, UPB_CTYPE_UINT64);

  if (ret->dest_handlers_) {
    upb_handlers_ref(ret->dest_handlers_, ret);
  }
  return ret;
}
Exemplo n.º 2
0
void upb_pbdecodermethod_unref(const upb_pbdecodermethod *m,
                               const void *owner) {
  upb_refcounted_unref(UPB_UPCAST(m), owner);
}
Exemplo n.º 3
0
Arquivo: def.c Projeto: Phuehvk/upb
void upb_def_unref(const upb_def *def, const void *owner) {
  upb_refcounted_unref(upb_upcast(def), owner);
}
Exemplo n.º 4
0
Arquivo: handlers.c Projeto: YauzZ/upb
void upb_handlers_unref(const upb_handlers *h, const void *owner) {
  upb_refcounted_unref(UPB_UPCAST(h), owner);
}
Exemplo n.º 5
0
Arquivo: def.c Projeto: YauzZ/upb
void upb_def_unref(const upb_def *def, const void *owner) {
  upb_refcounted_unref(UPB_UPCAST(def), owner);
}