Merge pull request #477 from haberman/upbupdate

Updated upb to latest version (C89).
This commit is contained in:
Joshua Haberman 2015-06-10 09:04:30 -07:00
commit c35ac0789b
5 changed files with 5929 additions and 5556 deletions

View file

@ -546,11 +546,9 @@ upb_fieldtype_t ruby_to_fieldtype(VALUE type) {
rb_raise(rb_eArgError, "Expected symbol for field type.");
}
upb_fieldtype_t upb_type = -1;
#define CONVERT(upb, ruby) \
if (SYM2ID(type) == rb_intern( # ruby )) { \
upb_type = UPB_TYPE_ ## upb; \
return UPB_TYPE_ ## upb; \
}
CONVERT(FLOAT, float);
@ -567,11 +565,8 @@ upb_fieldtype_t ruby_to_fieldtype(VALUE type) {
#undef CONVERT
if (upb_type == -1) {
rb_raise(rb_eArgError, "Unknown field type.");
}
return upb_type;
rb_raise(rb_eArgError, "Unknown field type.");
return 0;
}
VALUE fieldtype_to_ruby(upb_fieldtype_t type) {
@ -666,10 +661,12 @@ VALUE FieldDescriptor_label_set(VALUE _self, VALUE label) {
}
upb_label_t upb_label = -1;
bool converted = false;
#define CONVERT(upb, ruby) \
if (SYM2ID(label) == rb_intern( # ruby )) { \
upb_label = UPB_LABEL_ ## upb; \
converted = true; \
}
CONVERT(OPTIONAL, optional);
@ -678,7 +675,7 @@ VALUE FieldDescriptor_label_set(VALUE _self, VALUE label) {
#undef CONVERT
if (upb_label == -1) {
if (!converted) {
rb_raise(rb_eArgError, "Unknown field label.");
}

View file

@ -2,9 +2,7 @@
require 'mkmf'
$CFLAGS += " -O3 -std=c99 -Wno-unused-function " +
"-Wno-declaration-after-statement -Wno-unused-variable " +
"-Wno-sign-compare -DNDEBUG "
$CFLAGS += " -std=c99 -O3 -DNDEBUG"
$objs = ["protobuf.o", "defs.o", "storage.o", "message.o",
"repeated_field.o", "map.o", "encode_decode.o", "upb.o"]

View file

@ -120,7 +120,7 @@ static VALUE table_key_to_ruby(Map* self, const char* buf, size_t length) {
}
static void* value_memory(upb_value* v) {
return (void*)(&v->val.uint64);
return (void*)(&v->val);
}
// -----------------------------------------------------------------------------

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff