Core compiles, though with warnings, and is still incomplete.

pull/13171/head
Joshua Haberman 15 years ago
parent f49f7f94c1
commit 602e093504
  1. 528
      descriptor/descriptor.c
  2. 3
      src/upb_data.h
  3. 8
      src/upb_table.c

File diff suppressed because it is too large Load Diff

@ -190,8 +190,8 @@ typedef struct {
} upb_refcounted_string;
typedef union {
upb_string_common common;
upb_norefcount_string norefcount;
upb_string_common common;
upb_refcounted_string refcounted;
} upb_string;
@ -303,6 +303,7 @@ upb_string *upb_strreadfile(const char *filename);
// Initialize with the given macro, which must resolve to a const char*. You
// must not dynamically allocate this type.
typedef upb_string upb_static_string;
#define UPB_STRLIT_LEN(str, len) {0 | UPB_DATA_FROZEN, len, str}
#define UPB_STRLIT(str) {{{0 | UPB_DATA_FROZEN}, sizeof(str), str}}
// Allows using upb_strings in printf, ie:

@ -50,19 +50,19 @@ void upb_inttable_free(struct upb_inttable *t) { upb_table_free(&t->t); }
void upb_strtable_free(struct upb_strtable *t) {
// Free refs from the strtable.
struct upb_strtable_entry *e = upb_strtable_begin(t);
for(; e; e = upb_strtable_next(&m->ntof, e)) {
for(; e; e = upb_strtable_next(t, e)) {
upb_string_unref(e->key);
}
upb_table_free(&t->t);
}
static uint32_t strtable_bucket(struct upb_strtable *t, struct upb_string *key)
static uint32_t strtable_bucket(struct upb_strtable *t, upb_string *key)
{
uint32_t hash = MurmurHash2(key->ptr, key->byte_len, 0);
uint32_t hash = MurmurHash2(upb_string_getrobuf(key), upb_strlen(key), 0);
return (hash & (upb_strtable_size(t)-1)) + 1;
}
void *upb_strtable_lookup(struct upb_strtable *t, struct upb_string *key)
void *upb_strtable_lookup(struct upb_strtable *t, upb_string *key)
{
uint32_t bucket = strtable_bucket(t, key);
struct upb_strtable_entry *e;

Loading…
Cancel
Save