summaryrefslogtreecommitdiff
path: root/src/upb_def.c
diff options
context:
space:
mode:
authorJoshua Haberman <joshua@reverberate.org>2010-01-15 19:11:54 -0800
committerJoshua Haberman <joshua@reverberate.org>2010-01-15 19:11:54 -0800
commitd5566c6038845e505f7c16130b2368ef9bb3a373 (patch)
treebf808b4ef5d0391a9d6ed3be9247d3e0f7ce5cef /src/upb_def.c
parent9116c697f845e7ca215628029800c36f7dfbfaee (diff)
Remove struct keyword from all types, use typedef instead.
Diffstat (limited to 'src/upb_def.c')
-rw-r--r--src/upb_def.c250
1 files changed, 118 insertions, 132 deletions
diff --git a/src/upb_def.c b/src/upb_def.c
index 2ab1d11..7c9777d 100644
--- a/src/upb_def.c
+++ b/src/upb_def.c
@@ -56,11 +56,11 @@ static int div_round_up(int numerator, int denominator) {
// This algorithm is relatively cheap, since it only requires extra work when
// the external refcount on a cyclic type transitions from 0->1 or 1->0.
-static void msgdef_free(struct upb_msgdef *m);
-static void enumdef_free(struct upb_enumdef *e);
-static void unresolveddef_free(struct upb_unresolveddef *u);
+static void msgdef_free(upb_msgdef *m);
+static void enumdef_free(upb_enumdef *e);
+static void unresolveddef_free(struct _upb_unresolveddef *u);
-static void def_free(struct upb_def *def)
+static void def_free(upb_def *def)
{
switch(def->type) {
case UPB_DEF_MSG:
@@ -91,9 +91,8 @@ static void def_free(struct upb_def *def)
// search so we can stop the search if we detect a cycles that do not involve
// cycle_base. We can't color the nodes as we go by writing to a member of the
// def, because another thread could be performing the search concurrently.
-static int cycle_ref_or_unref(struct upb_msgdef *m,
- struct upb_msgdef *cycle_base,
- struct upb_msgdef **open_defs, int num_open_defs,
+static int cycle_ref_or_unref(upb_msgdef *m, upb_msgdef *cycle_base,
+ upb_msgdef **open_defs, int num_open_defs,
bool ref) {
bool found = false;
for(int i = 0; i < num_open_defs; i++) {
@@ -116,10 +115,10 @@ static int cycle_ref_or_unref(struct upb_msgdef *m,
open_defs[num_open_defs++] = m;
}
for(int i = 0; i < m->num_fields; i++) {
- struct upb_fielddef *f = &m->fields[i];
- struct upb_def *def = f->def;
+ upb_fielddef *f = &m->fields[i];
+ upb_def *def = f->def;
if(upb_issubmsg(f) && def->is_cyclic) {
- struct upb_msgdef *sub_m = upb_downcast_msgdef(def);
+ upb_msgdef *sub_m = upb_downcast_msgdef(def);
path_count += cycle_ref_or_unref(sub_m, cycle_base, open_defs,
num_open_defs, ref);
}
@@ -134,22 +133,22 @@ static int cycle_ref_or_unref(struct upb_msgdef *m,
}
}
-void _upb_def_reftozero(struct upb_def *def) {
+void _upb_def_reftozero(upb_def *def) {
if(def->is_cyclic) {
- struct upb_msgdef *m = upb_downcast_msgdef(def);
- struct upb_msgdef *open_defs[UPB_MAX_TYPE_CYCLE_LEN];
+ upb_msgdef *m = upb_downcast_msgdef(def);
+ upb_msgdef *open_defs[UPB_MAX_TYPE_CYCLE_LEN];
cycle_ref_or_unref(m, NULL, open_defs, 0, false);
} else {
def_free(def);
}
}
-void _upb_def_cyclic_ref(struct upb_def *def) {
- struct upb_msgdef *open_defs[UPB_MAX_TYPE_CYCLE_LEN];
+void _upb_def_cyclic_ref(upb_def *def) {
+ upb_msgdef *open_defs[UPB_MAX_TYPE_CYCLE_LEN];
cycle_ref_or_unref(upb_downcast_msgdef(def), NULL, open_defs, 0, true);
}
-static void upb_def_init(struct upb_def *def, enum upb_def_type type,
+static void upb_def_init(upb_def *def, enum upb_def_type type,
upb_strptr fqname) {
def->type = type;
def->is_cyclic = 0; // We detect this later, after resolving refs.
@@ -158,26 +157,26 @@ static void upb_def_init(struct upb_def *def, enum upb_def_type type,
upb_atomic_refcount_init(&def->refcount, 1);
}
-static void upb_def_uninit(struct upb_def *def) {
+static void upb_def_uninit(upb_def *def) {
upb_string_unref(def->fqname);
}
/* upb_unresolveddef **********************************************************/
-struct upb_unresolveddef {
- struct upb_def base;
+typedef struct _upb_unresolveddef {
+ upb_def base;
upb_strptr name;
-};
+} upb_unresolveddef;
-static struct upb_unresolveddef *upb_unresolveddef_new(upb_strptr str) {
- struct upb_unresolveddef *def = malloc(sizeof(*def));
+static upb_unresolveddef *upb_unresolveddef_new(upb_strptr str) {
+ upb_unresolveddef *def = malloc(sizeof(*def));
upb_strptr name = upb_string_getref(str, UPB_REF_THREADUNSAFE_READONLY);
upb_def_init(&def->base, UPB_DEF_UNRESOLVED, name);
def->name = name;
return def;
}
-static void unresolveddef_free(struct upb_unresolveddef *def) {
+static void unresolveddef_free(struct _upb_unresolveddef *def) {
upb_string_unref(def->name);
upb_def_uninit(&def->base);
free(def);
@@ -185,7 +184,7 @@ static void unresolveddef_free(struct upb_unresolveddef *def) {
/* upb_fielddef ***************************************************************/
-static void fielddef_init(struct upb_fielddef *f,
+static void fielddef_init(upb_fielddef *f,
google_protobuf_FieldDescriptorProto *fd)
{
f->type = fd->type;
@@ -201,14 +200,14 @@ static void fielddef_init(struct upb_fielddef *f,
}
}
-static struct upb_fielddef *fielddef_new(
- google_protobuf_FieldDescriptorProto *fd) {
- struct upb_fielddef *f = malloc(sizeof(*f));
+static upb_fielddef *fielddef_new(google_protobuf_FieldDescriptorProto *fd)
+{
+ upb_fielddef *f = malloc(sizeof(*f));
fielddef_init(f, fd);
return f;
}
-static void fielddef_uninit(struct upb_fielddef *f)
+static void fielddef_uninit(upb_fielddef *f)
{
upb_string_unref(f->name);
if(upb_hasdef(f) && f->owned) {
@@ -216,12 +215,12 @@ static void fielddef_uninit(struct upb_fielddef *f)
}
}
-static void fielddef_free(struct upb_fielddef *f) {
+static void fielddef_free(upb_fielddef *f) {
fielddef_uninit(f);
free(f);
}
-static void fielddef_copy(struct upb_fielddef *dst, struct upb_fielddef *src)
+static void fielddef_copy(upb_fielddef *dst, upb_fielddef *src)
{
*dst = *src;
dst->name = upb_string_getref(src->name, UPB_REF_FROZEN);
@@ -232,7 +231,7 @@ static void fielddef_copy(struct upb_fielddef *dst, struct upb_fielddef *src)
}
// Callback for sorting fields.
-static int compare_fields(struct upb_fielddef *f1, struct upb_fielddef *f2) {
+static int compare_fields(upb_fielddef *f1, upb_fielddef *f2) {
// Required fields go before non-required.
bool req1 = f1->label == GOOGLE_PROTOBUF_FIELDDESCRIPTORPROTO_LABEL_REQUIRED;
bool req2 = f2->label == GOOGLE_PROTOBUF_FIELDDESCRIPTORPROTO_LABEL_REQUIRED;
@@ -250,7 +249,7 @@ static int compare_fielddefs(const void *e1, const void *e2) {
}
static int compare_fds(const void *e1, const void *e2) {
- struct upb_fielddef f1, f2;
+ upb_fielddef f1, f2;
fielddef_init(&f1, *(void**)e1);
fielddef_init(&f2, *(void**)e2);
int ret = compare_fields(&f1, &f2);
@@ -264,17 +263,15 @@ void upb_fielddef_sortfds(google_protobuf_FieldDescriptorProto **fds, size_t num
qsort(fds, num, sizeof(*fds), compare_fds);
}
-static void fielddef_sort(struct upb_fielddef **defs, size_t num)
+static void fielddef_sort(upb_fielddef **defs, size_t num)
{
qsort(defs, num, sizeof(*defs), compare_fielddefs);
}
/* upb_msgdef *****************************************************************/
-static struct upb_msgdef *msgdef_new(struct upb_fielddef **fields,
- int num_fields,
- upb_strptr fqname,
- struct upb_status *status)
+static upb_msgdef *msgdef_new(upb_fielddef **fields, int num_fields,
+ upb_strptr fqname, upb_status *status)
{
if(num_fields > UPB_MAX_FIELDS) {
upb_seterr(status, UPB_STATUS_ERROR,
@@ -282,23 +279,23 @@ static struct upb_msgdef *msgdef_new(struct upb_fielddef **fields,
free(fields);
return NULL;
}
- struct upb_msgdef *m = malloc(sizeof(*m));
+ upb_msgdef *m = malloc(sizeof(*m));
upb_def_init(&m->base, UPB_DEF_MSG, fqname);
upb_atomic_refcount_init(&m->cycle_refcount, 0);
- upb_inttable_init(&m->itof, num_fields, sizeof(struct upb_itof_ent));
- upb_strtable_init(&m->ntof, num_fields, sizeof(struct upb_ntof_ent));
+ upb_inttable_init(&m->itof, num_fields, sizeof(upb_itof_ent));
+ upb_strtable_init(&m->ntof, num_fields, sizeof(upb_ntof_ent));
m->num_fields = num_fields;
m->set_flags_bytes = div_round_up(m->num_fields, 8);
// These are incremented in the loop.
m->num_required_fields = 0;
m->size = m->set_flags_bytes + 4; // 4 for the refcount.
- m->fields = malloc(sizeof(struct upb_fielddef) * num_fields);
+ m->fields = malloc(sizeof(upb_fielddef) * num_fields);
size_t max_align = 0;
for(int i = 0; i < num_fields; i++) {
- struct upb_fielddef *f = &m->fields[i];
- struct upb_type_info *type_info = &upb_type_info[fields[i]->type];
+ upb_fielddef *f = &m->fields[i];
+ upb_type_info *type_info = &upb_types[fields[i]->type];
fielddef_copy(f, fields[i]);
// General alignment rules are: each member must be at an address that is a
@@ -316,8 +313,8 @@ static struct upb_msgdef *msgdef_new(struct upb_fielddef **fields,
}
// Insert into the tables.
- struct upb_itof_ent itof_ent = {{f->number, 0}, f};
- struct upb_ntof_ent ntof_ent = {{f->name, 0}, f};
+ upb_itof_ent itof_ent = {{f->number, 0}, f};
+ upb_ntof_ent ntof_ent = {{f->name, 0}, f};
upb_inttable_insert(&m->itof, &itof_ent.e);
upb_strtable_insert(&m->ntof, &ntof_ent.e);
}
@@ -326,7 +323,7 @@ static struct upb_msgdef *msgdef_new(struct upb_fielddef **fields,
return m;
}
-static void msgdef_free(struct upb_msgdef *m)
+static void msgdef_free(upb_msgdef *m)
{
for (upb_field_count_t i = 0; i < m->num_fields; i++)
fielddef_uninit(&m->fields[i]);
@@ -337,8 +334,7 @@ static void msgdef_free(struct upb_msgdef *m)
free(m);
}
-static void upb_msgdef_resolve(struct upb_msgdef *m, struct upb_fielddef *f,
- struct upb_def *def) {
+static void upb_msgdef_resolve(upb_msgdef *m, upb_fielddef *f, upb_def *def) {
(void)m;
if(f->owned) upb_def_unref(f->def);
f->def = def;
@@ -349,75 +345,75 @@ static void upb_msgdef_resolve(struct upb_msgdef *m, struct upb_fielddef *f,
/* upb_enumdef ****************************************************************/
-struct ntoi_ent {
- struct upb_strtable_entry e;
+typedef struct {
+ upb_strtable_entry e;
uint32_t value;
-};
+} ntoi_ent;
-struct iton_ent {
- struct upb_inttable_entry e;
+typedef struct {
+ upb_inttable_entry e;
upb_strptr string;
-};
+} iton_ent;
-static struct upb_enumdef *enumdef_new(google_protobuf_EnumDescriptorProto *ed,
- upb_strptr fqname)
+static upb_enumdef *enumdef_new(google_protobuf_EnumDescriptorProto *ed,
+ upb_strptr fqname)
{
- struct upb_enumdef *e = malloc(sizeof(*e));
+ upb_enumdef *e = malloc(sizeof(*e));
upb_def_init(&e->base, UPB_DEF_ENUM, fqname);
int num_values = ed->set_flags.has.value ?
google_protobuf_EnumValueDescriptorProto_array_len(ed->value) : 0;
- upb_strtable_init(&e->ntoi, num_values, sizeof(struct ntoi_ent));
- upb_inttable_init(&e->iton, num_values, sizeof(struct iton_ent));
+ upb_strtable_init(&e->ntoi, num_values, sizeof(ntoi_ent));
+ upb_inttable_init(&e->iton, num_values, sizeof(iton_ent));
for(int i = 0; i < num_values; i++) {
google_protobuf_EnumValueDescriptorProto *value =
google_protobuf_EnumValueDescriptorProto_array_get(ed->value, i);
- struct ntoi_ent ntoi_ent = {{value->name, 0}, value->number};
- struct iton_ent iton_ent = {{value->number, 0}, value->name};
+ ntoi_ent ntoi_ent = {{value->name, 0}, value->number};
+ iton_ent iton_ent = {{value->number, 0}, value->name};
upb_strtable_insert(&e->ntoi, &ntoi_ent.e);
upb_inttable_insert(&e->iton, &iton_ent.e);
}
return e;
}
-static void enumdef_free(struct upb_enumdef *e) {
+static void enumdef_free(upb_enumdef *e) {
upb_strtable_free(&e->ntoi);
upb_inttable_free(&e->iton);
upb_def_uninit(&e->base);
free(e);
}
-static void fill_iter(struct upb_enum_iter *iter, struct ntoi_ent *ent) {
+static void fill_iter(upb_enum_iter *iter, ntoi_ent *ent) {
iter->state = ent;
iter->name = ent->e.key;
iter->val = ent->value;
}
-void upb_enum_begin(struct upb_enum_iter *iter, struct upb_enumdef *e) {
+void upb_enum_begin(upb_enum_iter *iter, upb_enumdef *e) {
// We could iterate over either table here; the choice is arbitrary.
- struct ntoi_ent *ent = upb_strtable_begin(&e->ntoi);
+ ntoi_ent *ent = upb_strtable_begin(&e->ntoi);
iter->e = e;
fill_iter(iter, ent);
}
-void upb_enum_next(struct upb_enum_iter *iter) {
- struct ntoi_ent *ent = iter->state;
+void upb_enum_next(upb_enum_iter *iter) {
+ ntoi_ent *ent = iter->state;
assert(ent);
ent = upb_strtable_next(&iter->e->ntoi, &ent->e);
iter->state = ent;
if(ent) fill_iter(iter, ent);
}
-bool upb_enum_done(struct upb_enum_iter *iter) {
+bool upb_enum_done(upb_enum_iter *iter) {
return iter->state == NULL;
}
/* symtab internal ***********************************************************/
-struct symtab_ent {
- struct upb_strtable_entry e;
- struct upb_def *def;
-};
+typedef struct {
+ upb_strtable_entry e;
+ upb_def *def;
+} symtab_ent;
/* Search for a character in a string, in reverse. */
static int my_memrchr(char *data, char c, size_t len)
@@ -429,9 +425,7 @@ static int my_memrchr(char *data, char c, size_t len)
/* Given a symbol and the base symbol inside which it is defined, find the
* symbol's definition in t. */
-static struct symtab_ent *resolve(struct upb_strtable *t,
- upb_strptr base,
- upb_strptr symbol)
+static symtab_ent *resolve(upb_strtable *t, upb_strptr base, upb_strptr symbol)
{
if(upb_strlen(base) + upb_strlen(symbol) + 1 >= UPB_SYMBOL_MAXLEN ||
upb_strlen(symbol) == 0) return NULL;
@@ -440,7 +434,7 @@ static struct symtab_ent *resolve(struct upb_strtable *t,
// Symbols starting with '.' are absolute, so we do a single lookup.
// Slice to omit the leading '.'
upb_strptr sym_str = upb_strslice(symbol, 1, INT_MAX);
- struct symtab_ent *e = upb_strtable_lookup(t, sym_str);
+ symtab_ent *e = upb_strtable_lookup(t, sym_str);
upb_string_unref(sym_str);
return e;
} else {
@@ -455,7 +449,7 @@ static struct symtab_ent *resolve(struct upb_strtable *t,
buf[baselen] = UPB_SYMBOL_SEPARATOR;
memcpy(buf + baselen + 1, upb_string_getrobuf(symbol), upb_strlen(symbol));
- struct symtab_ent *e = upb_strtable_lookup(t, sym_str);
+ symtab_ent *e = upb_strtable_lookup(t, sym_str);
if (e) return e;
else if(baselen == 0) return NULL; /* No more scopes to try. */
@@ -478,8 +472,8 @@ static upb_strptr join(upb_strptr base, upb_strptr name) {
return joined;
}
-static upb_strptr try_define(struct upb_strtable *t, upb_strptr base,
- upb_strptr name, struct upb_status *status)
+static upb_strptr try_define(upb_strtable *t, upb_strptr base,
+ upb_strptr name, upb_status *status)
{
if(upb_string_isnull(name)) {
upb_seterr(status, UPB_STATUS_ERROR,
@@ -498,26 +492,23 @@ static upb_strptr try_define(struct upb_strtable *t, upb_strptr base,
return fqname;
}
-static void insert_enum(struct upb_strtable *t,
+static void insert_enum(upb_strtable *t,
google_protobuf_EnumDescriptorProto *ed,
- upb_strptr base,
- struct upb_status *status)
+ upb_strptr base, upb_status *status)
{
upb_strptr name = ed->set_flags.has.name ? ed->name : UPB_STRING_NULL;
upb_strptr fqname = try_define(t, base, name, status);
if(upb_string_isnull(fqname)) return;
- struct symtab_ent e;
+ symtab_ent e;
e.e.key = fqname;
e.def = UPB_UPCAST(enumdef_new(ed, fqname));
upb_strtable_insert(t, &e.e);
upb_string_unref(fqname);
}
-static void insert_message(struct upb_strtable *t,
- google_protobuf_DescriptorProto *d,
- upb_strptr base, bool sort,
- struct upb_status *status)
+static void insert_message(upb_strtable *t, google_protobuf_DescriptorProto *d,
+ upb_strptr base, bool sort, upb_status *status)
{
upb_strptr name = d->set_flags.has.name ? d->name : UPB_STRING_NULL;
upb_strptr fqname = try_define(t, base, name, status);
@@ -525,11 +516,11 @@ static void insert_message(struct upb_strtable *t,
int num_fields = d->set_flags.has.field ?
google_protobuf_FieldDescriptorProto_array_len(d->field) : 0;
- struct symtab_ent e;
+ symtab_ent e;
e.e.key = fqname;
// Gather our list of fields, sorting if necessary.
- struct upb_fielddef **fielddefs = malloc(sizeof(*fielddefs) * num_fields);
+ upb_fielddef **fielddefs = malloc(sizeof(*fielddefs) * num_fields);
for (int i = 0; i < num_fields; i++) {
google_protobuf_FieldDescriptorProto *fd =
google_protobuf_FieldDescriptorProto_array_get(d->field, i);
@@ -562,8 +553,7 @@ error:
upb_string_unref(fqname);
}
-static bool find_cycles(struct upb_msgdef *m, int search_depth,
- struct upb_status *status)
+static bool find_cycles(upb_msgdef *m, int search_depth, upb_status *status)
{
if(search_depth > UPB_MAX_TYPE_DEPTH) {
// There are many situations in upb where we recurse over the type tree
@@ -592,10 +582,10 @@ static bool find_cycles(struct upb_msgdef *m, int search_depth,
UPB_UPCAST(m)->search_depth = ++search_depth;
bool cycle_found = false;
for(upb_field_count_t i = 0; i < m->num_fields; i++) {
- struct upb_fielddef *f = &m->fields[i];
+ upb_fielddef *f = &m->fields[i];
if(!upb_issubmsg(f)) continue;
- struct upb_def *sub_def = f->def;
- struct upb_msgdef *sub_m = upb_downcast_msgdef(sub_def);
+ upb_def *sub_def = f->def;
+ upb_msgdef *sub_m = upb_downcast_msgdef(sub_def);
if(find_cycles(sub_m, search_depth, status)) {
cycle_found = true;
UPB_UPCAST(m)->is_cyclic = true;
@@ -610,9 +600,9 @@ static bool find_cycles(struct upb_msgdef *m, int search_depth,
}
}
-static void addfd(struct upb_strtable *addto, struct upb_strtable *existingdefs,
+static void addfd(upb_strtable *addto, upb_strtable *existingdefs,
google_protobuf_FileDescriptorProto *fd, bool sort,
- struct upb_status *status)
+ upb_status *status)
{
upb_strptr pkg;
if(fd->set_flags.has.package) {
@@ -639,16 +629,16 @@ static void addfd(struct upb_strtable *addto, struct upb_strtable *existingdefs,
/* TODO: handle extensions and services. */
// Attempt to resolve all references.
- struct symtab_ent *e;
+ symtab_ent *e;
for(e = upb_strtable_begin(addto); e; e = upb_strtable_next(addto, &e->e)) {
- struct upb_msgdef *m = upb_dyncast_msgdef(e->def);
+ upb_msgdef *m = upb_dyncast_msgdef(e->def);
if(!m) continue;
upb_strptr base = e->e.key;
for(upb_field_count_t i = 0; i < m->num_fields; i++) {
- struct upb_fielddef *f = &m->fields[i];
+ upb_fielddef *f = &m->fields[i];
if(!upb_hasdef(f)) continue; // No resolving necessary.
upb_strptr name = upb_downcast_unresolveddef(f->def)->name;
- struct symtab_ent *found = resolve(existingdefs, base, name);
+ symtab_ent *found = resolve(existingdefs, base, name);
if(!found) found = resolve(addto, base, name);
upb_field_type_t expected = upb_issubmsg(f) ? UPB_DEF_MSG : UPB_DEF_ENUM;
if(!found) {
@@ -667,33 +657,33 @@ static void addfd(struct upb_strtable *addto, struct upb_strtable *existingdefs,
// Deal with type cycles.
for(e = upb_strtable_begin(addto); e; e = upb_strtable_next(addto, &e->e)) {
- struct upb_msgdef *m = upb_dyncast_msgdef(e->def);
+ upb_msgdef *m = upb_dyncast_msgdef(e->def);
if(!m) continue;
// Do an initial pass over the graph to check that there are no cycles
// longer than the maximum length. We also mark all cyclic defs as such,
// and decrement refs on cyclic defs.
find_cycles(m, 0, status);
- struct upb_msgdef *open_defs[UPB_MAX_TYPE_CYCLE_LEN];
+ upb_msgdef *open_defs[UPB_MAX_TYPE_CYCLE_LEN];
cycle_ref_or_unref(m, NULL, open_defs, 0, true);
}
}
/* upb_symtab *****************************************************************/
-struct upb_symtab *upb_symtab_new()
+upb_symtab *upb_symtab_new()
{
- struct upb_symtab *s = malloc(sizeof(*s));
+ upb_symtab *s = malloc(sizeof(*s));
upb_atomic_refcount_init(&s->refcount, 1);
upb_rwlock_init(&s->lock);
- upb_strtable_init(&s->symtab, 16, sizeof(struct symtab_ent));
- upb_strtable_init(&s->psymtab, 16, sizeof(struct symtab_ent));
+ upb_strtable_init(&s->symtab, 16, sizeof(symtab_ent));
+ upb_strtable_init(&s->psymtab, 16, sizeof(symtab_ent));
// Add descriptor.proto types to private symtable so we can parse descriptors.
// We know there is only 1.
google_protobuf_FileDescriptorProto *fd =
google_protobuf_FileDescriptorProto_array_get(upb_file_descriptor_set->file, 0);
- struct upb_status status = UPB_STATUS_INIT;
+ upb_status status = UPB_STATUS_INIT;
addfd(&s->psymtab, &s->symtab, fd, false, &status);
if(!upb_ok(&status)) {
fprintf(stderr, "Failed to initialize upb: %s.\n", status.msg);
@@ -703,21 +693,21 @@ struct upb_symtab *upb_symtab_new()
upb_static_string name =
UPB_STATIC_STRING_INIT("google.protobuf.FileDescriptorSet");
upb_strptr nameptr = UPB_STATIC_STRING_PTR_INIT(name);
- struct symtab_ent *e = upb_strtable_lookup(&s->psymtab, nameptr);
+ symtab_ent *e = upb_strtable_lookup(&s->psymtab, nameptr);
assert(e);
s->fds_msgdef = upb_downcast_msgdef(e->def);
return s;
}
-static void free_symtab(struct upb_strtable *t)
+static void free_symtab(upb_strtable *t)
{
- struct symtab_ent *e = upb_strtable_begin(t);
- for(; e; e = upb_strtable_next(t, &e->e))
+ symtab_ent *e;
+ for(e = upb_strtable_begin(t); e; e = upb_strtable_next(t, &e->e))
upb_def_unref(e->def);
upb_strtable_free(t);
}
-void _upb_symtab_free(struct upb_symtab *s)
+void _upb_symtab_free(upb_symtab *s)
{
free_symtab(&s->symtab);
free_symtab(&s->psymtab);
@@ -725,18 +715,17 @@ void _upb_symtab_free(struct upb_symtab *s)
free(s);
}
-struct upb_def **upb_symtab_getdefs(struct upb_symtab *s, int *count,
- upb_def_type_t type)
+upb_def **upb_symtab_getdefs(upb_symtab *s, int *count, upb_def_type_t type)
{
upb_rwlock_rdlock(&s->lock);
int total = upb_strtable_count(&s->symtab);
// We may only use part of this, depending on how many symbols are of the
// correct type.
- struct upb_def **defs = malloc(sizeof(*defs) * total);
- struct symtab_ent *e = upb_strtable_begin(&s->symtab);
+ upb_def **defs = malloc(sizeof(*defs) * total);
+ symtab_ent *e = upb_strtable_begin(&s->symtab);
int i = 0;
for(; e; e = upb_strtable_next(&s->symtab, &e->e)) {
- struct upb_def *def = e->def;
+ upb_def *def = e->def;
assert(def);
if(type == UPB_DEF_ANY || def->type == type)
defs[i++] = def;
@@ -748,11 +737,11 @@ struct upb_def **upb_symtab_getdefs(struct upb_symtab *s, int *count,
return defs;
}
-struct upb_def *upb_symtab_lookup(struct upb_symtab *s, upb_strptr sym)
+upb_def *upb_symtab_lookup(upb_symtab *s, upb_strptr sym)
{
upb_rwlock_rdlock(&s->lock);
- struct symtab_ent *e = upb_strtable_lookup(&s->symtab, sym);
- struct upb_def *ret = NULL;
+ symtab_ent *e = upb_strtable_lookup(&s->symtab, sym);
+ upb_def *ret = NULL;
if(e) {
ret = e->def;
upb_def_ref(ret);
@@ -762,11 +751,10 @@ struct upb_def *upb_symtab_lookup(struct upb_symtab *s, upb_strptr sym)
}
-struct upb_def *upb_symtab_resolve(struct upb_symtab *s, upb_strptr base,
- upb_strptr symbol) {
+upb_def *upb_symtab_resolve(upb_symtab *s, upb_strptr base, upb_strptr symbol) {
upb_rwlock_rdlock(&s->lock);
- struct symtab_ent *e = resolve(&s->symtab, base, symbol);
- struct upb_def *ret = NULL;
+ symtab_ent *e = resolve(&s->symtab, base, symbol);
+ upb_def *ret = NULL;
if(e) {
ret = e->def;
upb_def_ref(ret);
@@ -775,15 +763,14 @@ struct upb_def *upb_symtab_resolve(struct upb_symtab *s, upb_strptr base,
return ret;
}
-void upb_symtab_addfds(struct upb_symtab *s,
- google_protobuf_FileDescriptorSet *fds,
- struct upb_status *status)
+void upb_symtab_addfds(upb_symtab *s, google_protobuf_FileDescriptorSet *fds,
+ upb_status *status)
{
if(fds->set_flags.has.file) {
// Insert new symbols into a temporary table until we have verified that
// the descriptor is valid.
- struct upb_strtable tmp;
- upb_strtable_init(&tmp, 0, sizeof(struct symtab_ent));
+ upb_strtable tmp;
+ upb_strtable_init(&tmp, 0, sizeof(symtab_ent));
{ // Read lock scope
upb_rwlock_rdlock(&s->lock);
@@ -801,7 +788,7 @@ void upb_symtab_addfds(struct upb_symtab *s,
// Everything was successfully added, copy from the tmp symtable.
{ // Write lock scope
upb_rwlock_wrlock(&s->lock);
- struct symtab_ent *e;
+ symtab_ent *e;
for(e = upb_strtable_begin(&tmp); e; e = upb_strtable_next(&tmp, &e->e)) {
// We checked for duplicates when we had only the read lock, but it is
// theoretically possible that a duplicate symbol when we dropped the
@@ -825,8 +812,7 @@ void upb_symtab_addfds(struct upb_symtab *s,
return;
}
-void upb_symtab_add_desc(struct upb_symtab *s, upb_strptr desc,
- struct upb_status *status)
+void upb_symtab_add_desc(upb_symtab *s, upb_strptr desc, upb_status *status)
{
upb_msg *fds = upb_msg_new(s->fds_msgdef);
upb_msg_decodestr(fds, s->fds_msgdef, desc, status);
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback