diff --git a/protobuf-c/protobuf-c.c b/protobuf-c/protobuf-c.c index d31c589..cc698c4 100644 --- a/protobuf-c/protobuf-c.c +++ b/protobuf-c/protobuf-c.c @@ -388,7 +388,7 @@ repeated_field_get_packed_size(const ProtobufCFieldDescriptor *field, if (count == 0) return 0; header_size = get_tag_size(field->id); - if (0 == (field->flags & PROTOBUF_C_FIELD_FLAGS_PACKED)) + if (0 == (field->flags & PROTOBUF_C_FIELD_FLAG_PACKED)) header_size *= count; switch (field->type) { @@ -449,7 +449,7 @@ repeated_field_get_packed_size(const ProtobufCFieldDescriptor *field, /* case PROTOBUF_C_TYPE_GROUP: -- NOT SUPPORTED */ } - if (0 != (field->flags & PROTOBUF_C_FIELD_FLAGS_PACKED)) + if (0 != (field->flags & PROTOBUF_C_FIELD_FLAG_PACKED)) header_size += uint32_size(rv); return header_size + rv; } @@ -872,7 +872,7 @@ repeated_field_pack(const ProtobufCFieldDescriptor *field, void *array = *(void * const *) member; unsigned i; - if (0 != (field->flags & PROTOBUF_C_FIELD_FLAGS_PACKED)) { + if (0 != (field->flags & PROTOBUF_C_FIELD_FLAG_PACKED)) { unsigned header_len; unsigned len_start; unsigned min_length; @@ -1300,7 +1300,7 @@ repeated_field_pack_to_buffer(const ProtobufCFieldDescriptor *field, if (count == 0) return 0; - if (0 != (field->flags & PROTOBUF_C_FIELD_FLAGS_PACKED)) { + if (0 != (field->flags & PROTOBUF_C_FIELD_FLAG_PACKED)) { uint8_t scratch[MAX_UINT64_ENCODED_SIZE * 2]; size_t rv = tag_pack(field->id, scratch); size_t payload_len = get_packed_payload_length(field, count, array); @@ -2169,7 +2169,8 @@ parse_member(ScannedMember *scanned_member, case PROTOBUF_C_LABEL_REPEATED: if (scanned_member->wire_type == PROTOBUF_C_WIRE_TYPE_LENGTH_PREFIXED && - (0 != (field->flags & PROTOBUF_C_FIELD_FLAGS_PACKED) || is_packable_type(field->type))) + (0 != (field->flags & PROTOBUF_C_FIELD_FLAG_PACKED) || + is_packable_type(field->type))) { return parse_packed_repeated_member(scanned_member, member, message); @@ -2446,7 +2447,8 @@ protobuf_c_message_unpack(const ProtobufCMessageDescriptor *desc, size_t *n = STRUCT_MEMBER_PTR(size_t, rv, field->quantifier_offset); if (wire_type == PROTOBUF_C_WIRE_TYPE_LENGTH_PREFIXED && - (0 != (field->flags & PROTOBUF_C_FIELD_FLAGS_PACKED) || is_packable_type(field->type))) + (0 != (field->flags & PROTOBUF_C_FIELD_FLAG_PACKED) || + is_packable_type(field->type))) { size_t count; if (!count_packed_elements(field->type, diff --git a/protobuf-c/protobuf-c.h b/protobuf-c/protobuf-c.h index dcbb4ac..18f18c0 100644 --- a/protobuf-c/protobuf-c.h +++ b/protobuf-c/protobuf-c.h @@ -228,8 +228,8 @@ typedef void (*ProtobufCMessageInit)(ProtobufCMessage *); * otherwise NULL. * 'default_value' is a pointer to a default value for this field, * where allowed. - * 'packed' is only for REPEATED fields (it is 0 otherwise); this is if - * the repeated fields is marked with the 'packed' options. + * 'flags' is a flag word. Zero or more of the bits defined in the + * ProtobufCFieldFlag enum may be set. */ struct _ProtobufCFieldDescriptor { const char *name; @@ -240,7 +240,7 @@ struct _ProtobufCFieldDescriptor { unsigned offset; const void *descriptor; /* for MESSAGE and ENUM types */ const void *default_value; /* can be NULL */ - unsigned flags; + uint32_t flags; unsigned reserved_flags; void *reserved2; @@ -248,8 +248,9 @@ struct _ProtobufCFieldDescriptor { }; typedef enum { - PROTOBUF_C_FIELD_FLAGS_PACKED = (1 << 0), -} ProtobufCFieldFlagType; + /* Set if the field is repeated and marked with the 'packed' option. */ + PROTOBUF_C_FIELD_FLAG_PACKED = (1 << 0), +} ProtobufCFieldFlag; /* * ProtobufCMessageDescriptor: description of a message. diff --git a/protoc-c/c_field.cc b/protoc-c/c_field.cc index 847f125..cb7737d 100644 --- a/protoc-c/c_field.cc +++ b/protoc-c/c_field.cc @@ -128,7 +128,7 @@ void FieldGenerator::GenerateDescriptorInitializerGeneric(io::Printer* printer, if (descriptor_->label() == FieldDescriptor::LABEL_REPEATED && is_packable_type (descriptor_->type()) && descriptor_->options().packed()) - variables["flags"] += " | PROTOBUF_C_FIELD_FLAGS_PACKED"; + variables["flags"] += " | PROTOBUF_C_FIELD_FLAG_PACKED"; printer->Print(variables, "{\n"