Use C++11 enum class for Utf8CheckMode (#8490)
* Use C++11 enum class for Utf8CheckMode
* Switch to k-prefixed enum members
diff --git a/src/google/protobuf/compiler/cpp/cpp_helpers.cc b/src/google/protobuf/compiler/cpp/cpp_helpers.cc
index ceecb95..dcbb14f 100644
--- a/src/google/protobuf/compiler/cpp/cpp_helpers.cc
+++ b/src/google/protobuf/compiler/cpp/cpp_helpers.cc
@@ -1026,13 +1026,13 @@
const Options& options) {
if (field->file()->syntax() == FileDescriptor::SYNTAX_PROTO3 &&
FieldEnforceUtf8(field, options)) {
- return STRICT;
+ return Utf8CheckMode::kStrict;
} else if (GetOptimizeFor(field->file(), options) !=
FileOptions::LITE_RUNTIME &&
FileUtf8Verification(field->file(), options)) {
- return VERIFY;
+ return Utf8CheckMode::kVerify;
} else {
- return NONE;
+ return Utf8CheckMode::kNone;
}
}
@@ -1043,7 +1043,7 @@
const char* verify_function,
const Formatter& format) {
switch (GetUtf8CheckMode(field, options)) {
- case STRICT: {
+ case Utf8CheckMode::kStrict: {
if (for_parse) {
format("DO_(");
}
@@ -1063,7 +1063,7 @@
format.Outdent();
break;
}
- case VERIFY: {
+ case Utf8CheckMode::kVerify: {
format("::$proto_ns$::internal::WireFormat::$1$(\n", verify_function);
format.Indent();
format(parameters);
@@ -1076,7 +1076,7 @@
format.Outdent();
break;
}
- case NONE:
+ case Utf8CheckMode::kNone:
break;
}
}
@@ -1478,12 +1478,12 @@
if (!check_utf8) return; // return if this is a bytes field
auto level = GetUtf8CheckMode(field, options_);
switch (level) {
- case NONE:
+ case Utf8CheckMode::kNone:
return;
- case VERIFY:
+ case Utf8CheckMode::kVerify:
format_("#ifndef NDEBUG\n");
break;
- case STRICT:
+ case Utf8CheckMode::kStrict:
format_("CHK_(");
break;
}
@@ -1494,14 +1494,14 @@
}
format_("$pi_ns$::VerifyUTF8(str, $1$)", field_name);
switch (level) {
- case NONE:
+ case Utf8CheckMode::kNone:
return;
- case VERIFY:
+ case Utf8CheckMode::kVerify:
format_(
";\n"
"#endif // !NDEBUG\n");
break;
- case STRICT:
+ case Utf8CheckMode::kStrict:
format_(");\n");
break;
}
diff --git a/src/google/protobuf/compiler/cpp/cpp_helpers.h b/src/google/protobuf/compiler/cpp/cpp_helpers.h
index 43faf1c..8e509c1 100644
--- a/src/google/protobuf/compiler/cpp/cpp_helpers.h
+++ b/src/google/protobuf/compiler/cpp/cpp_helpers.h
@@ -774,10 +774,10 @@
std::vector<std::string> name_stack_;
};
-enum Utf8CheckMode {
- STRICT = 0, // Parsing will fail if non UTF-8 data is in string fields.
- VERIFY = 1, // Only log an error but parsing will succeed.
- NONE = 2, // No UTF-8 check.
+enum class Utf8CheckMode {
+ kStrict = 0, // Parsing will fail if non UTF-8 data is in string fields.
+ kVerify = 1, // Only log an error but parsing will succeed.
+ kNone = 2, // No UTF-8 check.
};
Utf8CheckMode GetUtf8CheckMode(const FieldDescriptor* field,
diff --git a/src/google/protobuf/compiler/cpp/cpp_message.cc b/src/google/protobuf/compiler/cpp/cpp_message.cc
index e91a497..0a41acf 100644
--- a/src/google/protobuf/compiler/cpp/cpp_message.cc
+++ b/src/google/protobuf/compiler/cpp/cpp_message.cc
@@ -1017,8 +1017,8 @@
"$classname$*>(&_$classname$_default_instance_); }\n");
auto utf8_check = GetUtf8CheckMode(descriptor_->field(0), options_);
if (descriptor_->field(0)->type() == FieldDescriptor::TYPE_STRING &&
- utf8_check != NONE) {
- if (utf8_check == STRICT) {
+ utf8_check != Utf8CheckMode::kNone) {
+ if (utf8_check == Utf8CheckMode::kStrict) {
format(
" static bool ValidateKey(std::string* s) {\n"
" return ::$proto_ns$::internal::WireFormatLite::"
@@ -1027,7 +1027,7 @@
" }\n",
descriptor_->field(0)->full_name());
} else {
- GOOGLE_CHECK_EQ(utf8_check, VERIFY);
+ GOOGLE_CHECK_EQ(utf8_check, Utf8CheckMode::kVerify);
format(
" static bool ValidateKey(std::string* s) {\n"
"#ifndef NDEBUG\n"
@@ -1046,8 +1046,8 @@
format(" static bool ValidateKey(void*) { return true; }\n");
}
if (descriptor_->field(1)->type() == FieldDescriptor::TYPE_STRING &&
- utf8_check != NONE) {
- if (utf8_check == STRICT) {
+ utf8_check != Utf8CheckMode::kNone) {
+ if (utf8_check == Utf8CheckMode::kStrict) {
format(
" static bool ValidateValue(std::string* s) {\n"
" return ::$proto_ns$::internal::WireFormatLite::"
@@ -1056,7 +1056,7 @@
" }\n",
descriptor_->field(1)->full_name());
} else {
- GOOGLE_CHECK_EQ(utf8_check, VERIFY);
+ GOOGLE_CHECK_EQ(utf8_check, Utf8CheckMode::kVerify);
format(
" static bool ValidateValue(std::string* s) {\n"
"#ifndef NDEBUG\n"