summaryrefslogtreecommitdiff
path: root/upb
diff options
context:
space:
mode:
authorJoshua Haberman <joshua@reverberate.org>2011-08-09 23:41:09 -0700
committerJoshua Haberman <joshua@reverberate.org>2011-08-09 23:41:09 -0700
commita1bb3dc448bc313427fedb4c435763acb90853fc (patch)
treeddb2e0d22f83c222724910a0b654ee1154660096 /upb
parentce425df78ce5da50005635cb270ba0e5e74ef814 (diff)
Makefile target for running Python tests.
Diffstat (limited to 'upb')
-rw-r--r--upb/def.c12
-rw-r--r--upb/def.h3
2 files changed, 6 insertions, 9 deletions
diff --git a/upb/def.c b/upb/def.c
index e90a288..7de247e 100644
--- a/upb/def.c
+++ b/upb/def.c
@@ -103,7 +103,6 @@ static void upb_def_init(upb_def *def, upb_deftype_t type) {
}
static void upb_def_uninit(upb_def *def) {
- //fprintf(stderr, "Freeing def: %p\n", def);
free(def->fqname);
}
@@ -115,23 +114,17 @@ static void upb_def_uninit(upb_def *def) {
// are replaced with pointers to the actual def being referenced.
typedef struct _upb_unresolveddef {
upb_def base;
-
- // The target type name. This may or may not be fully qualified. It is
- // tempting to want to use base.fqname for this, but that will be qualified
- // which is inappropriate for a name we still have to resolve.
- char *name;
} upb_unresolveddef;
// Is passed a ref on the string.
static upb_unresolveddef *upb_unresolveddef_new(const char *str) {
upb_unresolveddef *def = malloc(sizeof(*def));
upb_def_init(&def->base, UPB_DEF_UNRESOLVED);
- def->name = strdup(str);
+ def->base.fqname = strdup(str);
return def;
}
static void upb_unresolveddef_free(struct _upb_unresolveddef *def) {
- free(def->name);
upb_def_uninit(&def->base);
free(def);
}
@@ -729,7 +722,8 @@ bool upb_symtab_add(upb_symtab *s, upb_def **defs, int n, upb_status *status) {
}
if (!upb_hassubdef(f)) continue; // No resolving necessary.
- const char *name = upb_downcast_unresolveddef(f->def)->name;
+ upb_downcast_unresolveddef(f->def); // Type check.
+ const char *name = f->def->fqname;
// Resolve from either the addtab (pending adds) or symtab (existing
// defs). If both exist, prefer the pending add, because it will be
diff --git a/upb/def.h b/upb/def.h
index 9571773..66d3c70 100644
--- a/upb/def.h
+++ b/upb/def.h
@@ -117,6 +117,9 @@ INLINE struct _upb_msgdef *upb_fielddef_msgdef(upb_fielddef *f) {
INLINE struct _upb_accessor_vtbl *upb_fielddef_accessor(upb_fielddef *f) {
return f->accessor;
}
+INLINE const char *upb_fielddef_typename(upb_fielddef *f) {
+ return f->def ? f->def->fqname : NULL;
+}
// Only meaningful once the def is in a symtab (returns NULL otherwise, or for
// a fielddef where !upb_hassubdef(f)).
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback