Ticket #22863: protobuf-c-1.5.2-protobuf_34-0.patch

File protobuf-c-1.5.2-protobuf_34-0.patch, 13.4 KB (added by Xi Ruoyao, 7 months ago)

protobuf-c needs to be adapted

  • protoc-gen-c/c_bytes_field.cc

    diff --color -Naur protobuf-c-1.5.2.orig/protoc-gen-c/c_bytes_field.cc protobuf-c-1.5.2/protoc-gen-c/c_bytes_field.cc
    old new  
    9494
    9595void BytesFieldGenerator::GenerateStructMembers(google::protobuf::io::Printer* printer) const
    9696{
    97   switch (descriptor_->label()) {
    98     case google::protobuf::FieldDescriptor::LABEL_REQUIRED:
     97  if (descriptor_->is_required())
    9998      printer->Print(variables_, "ProtobufCBinaryData $name$$deprecated$;\n");
    100       break;
    101     case google::protobuf::FieldDescriptor::LABEL_OPTIONAL:
     99  else if (!descriptor_->is_repeated()) {
    102100      if (descriptor_->containing_oneof() == NULL && FieldSyntax(descriptor_) == 2)
    103101        printer->Print(variables_, "protobuf_c_boolean has_$name$$deprecated$;\n");
    104102      printer->Print(variables_, "ProtobufCBinaryData $name$$deprecated$;\n");
    105       break;
    106     case google::protobuf::FieldDescriptor::LABEL_REPEATED:
     103  } else {
    107104      printer->Print(variables_, "size_t n_$name$$deprecated$;\n");
    108105      printer->Print(variables_, "ProtobufCBinaryData *$name$$deprecated$;\n");
    109       break;
    110106  }
    111107}
    112108void BytesFieldGenerator::GenerateDefaultValueDeclarations(google::protobuf::io::Printer* printer) const
    … …  
    135131}
    136132void BytesFieldGenerator::GenerateStaticInit(google::protobuf::io::Printer* printer) const
    137133{
    138   switch (descriptor_->label()) {
    139     case google::protobuf::FieldDescriptor::LABEL_REQUIRED:
     134  if (descriptor_->is_required())
    140135      printer->Print(variables_, "$default_value$");
    141       break;
    142     case google::protobuf::FieldDescriptor::LABEL_OPTIONAL:
     136  else if (!descriptor_->is_repeated()) {
    143137      if (FieldSyntax(descriptor_) == 2)
    144138        printer->Print(variables_, "0, ");
    145139      printer->Print(variables_, "$default_value$");
    146       break;
    147     case google::protobuf::FieldDescriptor::LABEL_REPEATED:
     140  } else
    148141      // no support for default?
    149142      printer->Print("0,NULL");
    150       break;
    151   }
    152143}
    153144void BytesFieldGenerator::GenerateDescriptorInitializer(google::protobuf::io::Printer* printer) const
    154145{
  • protoc-gen-c/c_enum_field.cc

    diff --color -Naur protobuf-c-1.5.2.orig/protoc-gen-c/c_enum_field.cc protobuf-c-1.5.2/protoc-gen-c/c_enum_field.cc
    old new  
    9595
    9696void EnumFieldGenerator::GenerateStructMembers(google::protobuf::io::Printer* printer) const
    9797{
    98   switch (descriptor_->label()) {
    99     case google::protobuf::FieldDescriptor::LABEL_REQUIRED:
     98  if (descriptor_->is_required())
    10099      printer->Print(variables_, "$type$ $name$$deprecated$;\n");
    101       break;
    102     case google::protobuf::FieldDescriptor::LABEL_OPTIONAL:
     100  else if (!descriptor_->is_repeated()) {
    103101      if (descriptor_->containing_oneof() == NULL && FieldSyntax(descriptor_) == 2)
    104102        printer->Print(variables_, "protobuf_c_boolean has_$name$$deprecated$;\n");
    105103      printer->Print(variables_, "$type$ $name$$deprecated$;\n");
    106       break;
    107     case google::protobuf::FieldDescriptor::LABEL_REPEATED:
     104  } else {
    108105      printer->Print(variables_, "size_t n_$name$$deprecated$;\n");
    109106      printer->Print(variables_, "$type$ *$name$$deprecated$;\n");
    110       break;
    111107  }
    112108}
    113109
    … …  
    117113}
    118114void EnumFieldGenerator::GenerateStaticInit(google::protobuf::io::Printer* printer) const
    119115{
    120   switch (descriptor_->label()) {
    121     case google::protobuf::FieldDescriptor::LABEL_REQUIRED:
     116  if (descriptor_->is_required())
    122117      printer->Print(variables_, "$default$");
    123       break;
    124     case google::protobuf::FieldDescriptor::LABEL_OPTIONAL:
     118  else if (!descriptor_->is_repeated()) {
    125119      if (FieldSyntax(descriptor_) == 2)
    126120        printer->Print(variables_, "0, ");
    127121      printer->Print(variables_, "$default$");
    128       break;
    129     case google::protobuf::FieldDescriptor::LABEL_REPEATED:
     122  } else
    130123      // no support for default?
    131124      printer->Print("0,NULL");
    132       break;
    133   }
    134125}
    135126
    136127void EnumFieldGenerator::GenerateDescriptorInitializer(google::protobuf::io::Printer* printer) const
  • protoc-gen-c/c_field.cc

    diff --color -Naur protobuf-c-1.5.2.orig/protoc-gen-c/c_field.cc protobuf-c-1.5.2/protoc-gen-c/c_field.cc
    old new  
    125125    variables["oneofname"] = CamelToLower(oneof->name());
    126126
    127127  if (FieldSyntax(descriptor_) == 3 &&
    128     descriptor_->label() == google::protobuf::FieldDescriptor::LABEL_OPTIONAL) {
     128    !descriptor_->is_required() && !descriptor_->is_repeated()) {
    129129    variables["LABEL"] = "NONE";
    130130    optional_uses_has = false;
    131131  } else {
    132     variables["LABEL"] = CamelToUpper(GetLabelName(descriptor_->label()));
     132    variables["LABEL"] = CamelToUpper(GetLabelName(*descriptor_));
    133133  }
    134134
    135135  if (descriptor_->has_default_value()) {
    … …  
    145145
    146146  variables["flags"] = "0";
    147147
    148   if (descriptor_->label() == google::protobuf::FieldDescriptor::LABEL_REPEATED
     148  if (descriptor_->is_repeated()
    149149   && is_packable_type (descriptor_->type())
    150150   && descriptor_->options().packed()) {
    151151    variables["flags"] += " | PROTOBUF_C_FIELD_FLAG_PACKED";
    152   } else if (descriptor_->label() == google::protobuf::FieldDescriptor::LABEL_REPEATED
     152  } else if (descriptor_->is_repeated()
    153153   && is_packable_type (descriptor_->type())
    154154   && FieldSyntax(descriptor_) == 3
    155155   && !descriptor_->options().has_packed()) {
    … …  
    179179    "  $value$,\n"
    180180    "  PROTOBUF_C_LABEL_$LABEL$,\n"
    181181    "  PROTOBUF_C_TYPE_$TYPE$,\n");
    182   switch (descriptor_->label()) {
    183     case google::protobuf::FieldDescriptor::LABEL_REQUIRED:
     182  if (descriptor_->is_required())
    184183      printer->Print(variables, "  0,   /* quantifier_offset */\n");
    185       break;
    186     case google::protobuf::FieldDescriptor::LABEL_OPTIONAL:
     184  else if (!descriptor_->is_repeated()) {
    187185      if (oneof != NULL) {
    188186        printer->Print(variables, "  offsetof($classname$, $oneofname$_case),\n");
    189187      } else if (optional_uses_has) {
    … …  
    191189      } else {
    192190        printer->Print(variables, "  0,   /* quantifier_offset */\n");
    193191      }
    194       break;
    195     case google::protobuf::FieldDescriptor::LABEL_REPEATED:
     192  } else
    196193      printer->Print(variables, "  offsetof($classname$, n_$name$),\n");
    197       break;
    198   }
    199194  printer->Print(variables, "  offsetof($classname$, $name$),\n");
    200195  printer->Print(variables, "  $descriptor_addr$,\n");
    201196  printer->Print(variables, "  $default_value$,\n");
  • protoc-gen-c/c_helpers.cc

    diff --color -Naur protobuf-c-1.5.2.orig/protoc-gen-c/c_helpers.cc protobuf-c-1.5.2/protoc-gen-c/c_helpers.cc
    old new  
    329329  return result;
    330330}
    331331
    332 std::string GetLabelName(google::protobuf::FieldDescriptor::Label label) {
    333   switch (label) {
    334     case google::protobuf::FieldDescriptor::LABEL_OPTIONAL: return "optional";
    335     case google::protobuf::FieldDescriptor::LABEL_REQUIRED: return "required";
    336     case google::protobuf::FieldDescriptor::LABEL_REPEATED: return "repeated";
    337   }
    338   return "bad-label";
     332std::string GetLabelName(const google::protobuf::FieldDescriptor &desc) {
     333  if (desc.is_required()) return "required";
     334  if (desc.is_repeated()) return "repeated";
     335  return "optional";
    339336}
    340337
    341338unsigned
  • protoc-gen-c/c_helpers.h

    diff --color -Naur protobuf-c-1.5.2.orig/protoc-gen-c/c_helpers.h protobuf-c-1.5.2/protoc-gen-c/c_helpers.h
    old new  
    151151std::string FilenameIdentifier(compat::StringView filename);
    152152
    153153// return 'required', 'optional', or 'repeated'
    154 std::string GetLabelName(google::protobuf::FieldDescriptor::Label label);
     154std::string GetLabelName(const google::protobuf::FieldDescriptor &desc);
    155155
    156156// write IntRanges entries for a bunch of sorted values.
    157157// returns the number of ranges there are to bsearch.
  • protoc-gen-c/c_message_field.cc

    diff --color -Naur protobuf-c-1.5.2.orig/protoc-gen-c/c_message_field.cc protobuf-c-1.5.2/protoc-gen-c/c_message_field.cc
    old new  
    8383  vars["name"] = FieldName(descriptor_);
    8484  vars["type"] = FullNameToC(descriptor_->message_type()->full_name(), descriptor_->message_type()->file());
    8585  vars["deprecated"] = FieldDeprecated(descriptor_);
    86   switch (descriptor_->label()) {
    87     case google::protobuf::FieldDescriptor::LABEL_REQUIRED:
    88     case google::protobuf::FieldDescriptor::LABEL_OPTIONAL:
     86  if (!descriptor_->is_repeated())
    8987      printer->Print(vars, "$type$ *$name$$deprecated$;\n");
    90       break;
    91     case google::protobuf::FieldDescriptor::LABEL_REPEATED:
     88  else {
    9289      printer->Print(vars, "size_t n_$name$$deprecated$;\n");
    9390      printer->Print(vars, "$type$ **$name$$deprecated$;\n");
    94       break;
    9591  }
    9692}
    9793std::string MessageFieldGenerator::GetDefaultValue(void) const
    … …  
    10399}
    104100void MessageFieldGenerator::GenerateStaticInit(google::protobuf::io::Printer* printer) const
    105101{
    106   switch (descriptor_->label()) {
    107     case google::protobuf::FieldDescriptor::LABEL_REQUIRED:
    108     case google::protobuf::FieldDescriptor::LABEL_OPTIONAL:
     102  if (!descriptor_->is_repeated())
    109103      printer->Print("NULL");
    110       break;
    111     case google::protobuf::FieldDescriptor::LABEL_REPEATED:
     104  else
    112105      printer->Print("0,NULL");
    113       break;
    114   }
    115106}
    116107void MessageFieldGenerator::GenerateDescriptorInitializer(google::protobuf::io::Printer* printer) const
    117108{
  • protoc-gen-c/c_primitive_field.cc

    diff --color -Naur protobuf-c-1.5.2.orig/protoc-gen-c/c_primitive_field.cc protobuf-c-1.5.2/protoc-gen-c/c_primitive_field.cc
    old new  
    109109  vars["name"] = FieldName(descriptor_);
    110110  vars["deprecated"] = FieldDeprecated(descriptor_);
    111111
    112   switch (descriptor_->label()) {
    113     case google::protobuf::FieldDescriptor::LABEL_REQUIRED:
     112  if (descriptor_->is_required())
    114113      printer->Print(vars, "$c_type$ $name$$deprecated$;\n");
    115       break;
    116     case google::protobuf::FieldDescriptor::LABEL_OPTIONAL:
     114  else if (!descriptor_->is_repeated()) {
    117115      if (descriptor_->containing_oneof() == NULL && FieldSyntax(descriptor_) == 2)
    118116        printer->Print(vars, "protobuf_c_boolean has_$name$$deprecated$;\n");
    119117      printer->Print(vars, "$c_type$ $name$$deprecated$;\n");
    120       break;
    121     case google::protobuf::FieldDescriptor::LABEL_REPEATED:
     118  } else {
    122119      printer->Print(vars, "size_t n_$name$$deprecated$;\n");
    123120      printer->Print(vars, "$c_type$ *$name$$deprecated$;\n");
    124       break;
    125121  }
    126122}
    127123std::string PrimitiveFieldGenerator::GetDefaultValue() const
    … …  
    156152  } else {
    157153    vars["default_value"] = "0";
    158154  }
    159   switch (descriptor_->label()) {
    160     case google::protobuf::FieldDescriptor::LABEL_REQUIRED:
     155  if (descriptor_->is_required())
    161156      printer->Print(vars, "$default_value$");
    162       break;
    163     case google::protobuf::FieldDescriptor::LABEL_OPTIONAL:
     157  else if (!descriptor_->is_repeated()) {
    164158      if (FieldSyntax(descriptor_) == 2)
    165159        printer->Print(vars, "0, ");
    166160      printer->Print(vars, "$default_value$");
    167       break;
    168     case google::protobuf::FieldDescriptor::LABEL_REPEATED:
     161  } else
    169162      printer->Print("0,NULL");
    170       break;
    171   }
    172163}
    173164
    174165void PrimitiveFieldGenerator::GenerateDescriptorInitializer(google::protobuf::io::Printer* printer) const
  • protoc-gen-c/c_string_field.cc

    diff --color -Naur protobuf-c-1.5.2.orig/protoc-gen-c/c_string_field.cc protobuf-c-1.5.2/protoc-gen-c/c_string_field.cc
    old new  
    9494{
    9595  const ProtobufCFileOptions opt = descriptor_->file()->options().GetExtension(pb_c_file);
    9696
    97   switch (descriptor_->label()) {
    98     case google::protobuf::FieldDescriptor::LABEL_REQUIRED:
    99     case google::protobuf::FieldDescriptor::LABEL_OPTIONAL:
     97  if (!descriptor_->is_repeated()) {
    10098      if (opt.const_strings())
    10199        printer->Print(variables_, "const ");
    102100      printer->Print(variables_, "char *$name$$deprecated$;\n");
    103       break;
    104     case google::protobuf::FieldDescriptor::LABEL_REPEATED:
     101  } else {
    105102      printer->Print(variables_, "size_t n_$name$$deprecated$;\n");
    106103      if (opt.const_strings())
    107104        printer->Print(variables_, "const ");
    108105      printer->Print(variables_, "char **$name$$deprecated$;\n");
    109       break;
    110106  }
    111107}
    112108void StringFieldGenerator::GenerateDefaultValueDeclarations(google::protobuf::io::Printer* printer) const
    … …  
    138134  } else {
    139135    vars["default"] = "(char *)protobuf_c_empty_string";
    140136  }
    141   switch (descriptor_->label()) {
    142     case google::protobuf::FieldDescriptor::LABEL_REQUIRED:
    143     case google::protobuf::FieldDescriptor::LABEL_OPTIONAL:
     137  if (!descriptor_->is_repeated())
    144138      printer->Print(vars, "$default$");
    145       break;
    146     case google::protobuf::FieldDescriptor::LABEL_REPEATED:
     139  else
    147140      printer->Print(vars, "0,NULL");
    148       break;
    149   }
    150141}
    151142void StringFieldGenerator::GenerateDescriptorInitializer(google::protobuf::io::Printer* printer) const
    152143{