Unverified Commit dbfbfeeb authored by Robert Edmonds's avatar Robert Edmonds Committed by GitHub

Merge pull request #711 from protobuf-c/edmonds/google-protobuf-26-fixes

Chase compatibility issues with Google protobuf >= 26.0
parents 428b7297 a4d04806
...@@ -117,14 +117,7 @@ FileGenerator::~FileGenerator() {} ...@@ -117,14 +117,7 @@ FileGenerator::~FileGenerator() {}
void FileGenerator::GenerateHeader(io::Printer* printer) { void FileGenerator::GenerateHeader(io::Printer* printer) {
std::string filename_identifier = FilenameIdentifier(file_->name()); std::string filename_identifier = FilenameIdentifier(file_->name());
int min_header_version = 1000000; const int min_header_version = 1003000;
#if GOOGLE_PROTOBUF_VERSION >= 4023000
if (FileDescriptorLegacy(file_).syntax() == FileDescriptorLegacy::SYNTAX_PROTO3) {
#else
if (file_->syntax() == FileDescriptor::SYNTAX_PROTO3) {
#endif
min_header_version = 1003000;
}
// Generate top of header. // Generate top of header.
printer->Print( printer->Print(
......
...@@ -93,6 +93,12 @@ class PROTOC_C_EXPORT CGenerator : public CodeGenerator { ...@@ -93,6 +93,12 @@ class PROTOC_C_EXPORT CGenerator : public CodeGenerator {
const std::string& parameter, const std::string& parameter,
OutputDirectory* output_directory, OutputDirectory* output_directory,
std::string* error) const; std::string* error) const;
#if GOOGLE_PROTOBUF_VERSION >= 5026000
uint64_t GetSupportedFeatures() const { return 0; }
Edition GetMinimumEdition() const { return Edition::EDITION_PROTO2; }
Edition GetMaximumEdition() const { return Edition::EDITION_PROTO3; }
#endif
}; };
} // namespace c } // namespace c
......
...@@ -70,10 +70,6 @@ ...@@ -70,10 +70,6 @@
#include <protobuf-c/protobuf-c.pb.h> #include <protobuf-c/protobuf-c.pb.h>
#include <google/protobuf/io/printer.h> #include <google/protobuf/io/printer.h>
#if GOOGLE_PROTOBUF_VERSION >= 4023000
# include <google/protobuf/descriptor_legacy.h>
#endif
namespace google { namespace google {
namespace protobuf { namespace protobuf {
namespace compiler { namespace compiler {
...@@ -173,13 +169,21 @@ struct NameIndex ...@@ -173,13 +169,21 @@ struct NameIndex
int compare_name_indices_by_name(const void*, const void*); int compare_name_indices_by_name(const void*, const void*);
// Return the syntax version of the file containing the field. // Return the syntax version of the file containing the field.
// This wrapper is needed to be able to compile against protobuf2.
inline int FieldSyntax(const FieldDescriptor* field) { inline int FieldSyntax(const FieldDescriptor* field) {
#if GOOGLE_PROTOBUF_VERSION >= 4023000 auto proto = FileDescriptorProto();
return FileDescriptorLegacy(field->file()).syntax() == FileDescriptorLegacy::SYNTAX_PROTO3 ? 3 : 2; field->file()->CopyTo(&proto);
#else
return field->file()->syntax() == FileDescriptor::SYNTAX_PROTO3 ? 3 : 2; if (proto.has_syntax()) {
#endif auto syntax = proto.syntax();
assert(syntax == "proto2" || syntax == "proto3");
if (syntax == "proto2") {
return 2;
} else if (syntax == "proto3") {
return 3;
}
}
return 2;
} }
// Work around changes in protobuf >= 22.x without breaking compilation against // Work around changes in protobuf >= 22.x without breaking compilation against
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment