summaryrefslogtreecommitdiff
path: root/upb/descriptor
diff options
context:
space:
mode:
authorJoshua Haberman <jhaberman@gmail.com>2019-01-29 08:26:00 -0800
committerGitHub <noreply@github.com>2019-01-29 08:26:00 -0800
commit2b62fbce6734eb672ae6ff6fcf258bfff4267ae8 (patch)
treec39dd54ef29a0b6610ebd4794b1646c83c66357a /upb/descriptor
parentc7870e0f77d6331babfdb89f8c83e4e0279b5e70 (diff)
parent3d931557907307ecc19b74e8f3188301b149e99a (diff)
Merge pull request #145 from haberman/arrayapi
Generated code API changes for array and hazzers.
Diffstat (limited to 'upb/descriptor')
-rw-r--r--upb/descriptor/descriptor.upbdefs.c2
-rw-r--r--upb/descriptor/reader.c31
2 files changed, 25 insertions, 8 deletions
diff --git a/upb/descriptor/descriptor.upbdefs.c b/upb/descriptor/descriptor.upbdefs.c
index fa5bb3b..d91f674 100644
--- a/upb/descriptor/descriptor.upbdefs.c
+++ b/upb/descriptor/descriptor.upbdefs.c
@@ -7,8 +7,6 @@
* regenerated. */
#include "upb/def.h"
-#include "upb/structdefs.int.h"
-
static const upb_msgdef msgs[22];
static const upb_fielddef fields[107];
static const upb_enumdef enums[5];
diff --git a/upb/descriptor/reader.c b/upb/descriptor/reader.c
index 054ebd2..fd219fe 100644
--- a/upb/descriptor/reader.c
+++ b/upb/descriptor/reader.c
@@ -321,14 +321,21 @@ static void *file_startenum(void *closure, const void *hd) {
static void *file_startext(void *closure, const void *hd) {
upb_descreader *r = closure;
- bool ok;
r->f = upb_fielddef_new(r);
- ok = upb_filedef_addext(r->file, r->f, r, NULL);
UPB_UNUSED(hd);
- UPB_ASSERT(ok);
return r;
}
+static bool file_endext(void *closure, const void *hd) {
+ /* The current symtab code can't handle extensions, so we just discard
+ * them for now. */
+ upb_descreader *r = closure;
+ upb_fielddef_unref(r->f, r);
+ UPB_UNUSED(hd);
+ r->f = NULL;
+ return true;
+}
+
static size_t file_ondep(void *closure, const void *hd, const char *buf,
size_t n, const upb_bufhandle *handle) {
upb_descreader *r = closure;
@@ -702,13 +709,21 @@ static void *msg_startmsg(void *closure, const void *hd) {
static void *msg_startext(void *closure, const void *hd) {
upb_descreader *r = closure;
- upb_fielddef *f = upb_fielddef_new(&f);
- bool ok = upb_filedef_addext(r->file, f, &f, NULL);
+ r->f = upb_fielddef_new(r);
UPB_UNUSED(hd);
- UPB_ASSERT(ok);
return r;
}
+static bool msg_endext(void *closure, const void *hd) {
+ /* The current symtab code can't handle extensions, so we just discard
+ * them for now. */
+ upb_descreader *r = closure;
+ upb_fielddef_unref(r->f, r);
+ UPB_UNUSED(hd);
+ r->f = NULL;
+ return true;
+}
+
static void *msg_startfield(void *closure, const void *hd) {
upb_descreader *r = closure;
r->f = upb_fielddef_new(&r->f);
@@ -763,6 +778,8 @@ static void reghandlers(const void *closure, upb_handlers *h) {
upb_handlers_setstring(h, F(DescriptorProto, name), &msg_name, NULL);
upb_handlers_setstartsubmsg(h, F(DescriptorProto, extension), &msg_startext,
NULL);
+ upb_handlers_setendsubmsg(h, F(DescriptorProto, extension), &msg_endext,
+ NULL);
upb_handlers_setstartsubmsg(h, F(DescriptorProto, nested_type),
&msg_startmsg, NULL);
upb_handlers_setstartsubmsg(h, F(DescriptorProto, field),
@@ -786,6 +803,8 @@ static void reghandlers(const void *closure, upb_handlers *h) {
&file_startenum, NULL);
upb_handlers_setstartsubmsg(h, F(FileDescriptorProto, extension),
&file_startext, NULL);
+ upb_handlers_setendsubmsg(h, F(FileDescriptorProto, extension),
+ &file_endext, NULL);
upb_handlers_setstring(h, F(FileDescriptorProto, dependency),
&file_ondep, NULL);
} else if (upbdefs_google_protobuf_EnumValueDescriptorProto_is(m)) {
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback