Don't rely on non-standard 'INT32_MAX' / 'INT32_MIN'.

Define safe constants to use when padding enums.

Fixes #80.
pull/84/head
Tres Seaver 10 years ago
parent faf581d208
commit 83671c0514
  1. 4
      src/google/protobuf/compiler/cpp/cpp_enum.cc
  2. 7
      src/google/protobuf/compiler/cpp/cpp_file.cc
  3. 7
      src/google/protobuf/compiler/plugin.pb.h
  4. 7
      src/google/protobuf/descriptor.pb.h

@ -106,8 +106,8 @@ void EnumGenerator::GenerateDefinition(io::Printer* printer) {
// INT32_MIN and INT32_MAX
if (descriptor_->value_count() > 0) printer->Print(",\n");
printer->Print(vars,
"$classname$_$prefix$INT_MIN_SENTINEL_DO_NOT_USE_ = INT32_MIN,\n"
"$classname$_$prefix$INT_MAX_SENTINEL_DO_NOT_USE_ = INT32_MAX");
"$classname$_$prefix$INT_MIN_SENTINEL_DO_NOT_USE_ = PROTOBUF_ENUM_MIN,\n"
"$classname$_$prefix$INT_MAX_SENTINEL_DO_NOT_USE_ = PROTOBUF_ENUM_MAX");
}
printer->Outdent();

@ -105,7 +105,12 @@ void FileGenerator::GenerateHeader(io::Printer* printer) {
"#define PROTOBUF_$filename_identifier$__INCLUDED\n"
"\n"
"#include <string>\n"
"#include <stdint.h>\n" // INT32_MIN, INT32_MAX
"#ifndef PROTOBUF_ENUM_MIN\n"
"#define PROTOBUF_ENUM_MIN (int32_t)0x80000000\n"
"#endif\n"
"#ifndef PROTOBUF_ENUM_MAX\n"
"#define PROTOBUF_ENUM_MAX (int32_t)0x7fffffff\n"
"#endif\n"
"\n",
"filename", file_->name(),
"filename_identifier", filename_identifier);

@ -5,7 +5,12 @@
#define PROTOBUF_google_2fprotobuf_2fcompiler_2fplugin_2eproto__INCLUDED
#include <string>
#include <stdint.h>
#ifndef PROTOBUF_ENUM_MIN
#define PROTOBUF_ENUM_MIN (int32_t)0x80000000
#endif
#ifndef PROTOBUF_ENUM_MAX
#define PROTOBUF_ENUM_MAX (int32_t)0x7fffffff
#endif
#include <google/protobuf/stubs/common.h>

@ -5,7 +5,12 @@
#define PROTOBUF_google_2fprotobuf_2fdescriptor_2eproto__INCLUDED
#include <string>
#include <stdint.h>
#ifndef PROTOBUF_ENUM_MIN
#define PROTOBUF_ENUM_MIN (int32_t)0x80000000
#endif
#ifndef PROTOBUF_ENUM_MAX
#define PROTOBUF_ENUM_MAX (int32_t)0x7fffffff
#endif
#include <google/protobuf/stubs/common.h>

Loading…
Cancel
Save