浏览代码

emit annotations for oneof field accessors in c++

Justin Buchanan 6 年之前
父节点
当前提交
27228494c3
共有 2 个文件被更改,包括 5 次插入4 次删除
  1. 1 0
      src/google/protobuf/compiler/cpp/cpp_helpers.h
  2. 4 4
      src/google/protobuf/compiler/cpp/cpp_message.cc

+ 1 - 0
src/google/protobuf/compiler/cpp/cpp_helpers.h

@@ -643,6 +643,7 @@ class PROTOC_EXPORT Formatter {
   static std::string ToString(const EnumValueDescriptor* d) {
     return Payload(d);
   }
+  static std::string ToString(const OneofDescriptor* d) { return Payload(d); }
 
   template <typename Descriptor>
   static std::string Payload(const Descriptor* descriptor) {

+ 4 - 4
src/google/protobuf/compiler/cpp/cpp_message.cc

@@ -761,8 +761,8 @@ void MessageGenerator::GenerateFieldAccessorDeclarations(io::Printer* printer) {
     format.Set("oneof_name", oneof->name());
     format.Set("camel_oneof_name", UnderscoresToCamelCase(oneof->name(), true));
     format(
-        "void clear_$oneof_name$();\n"
-        "$camel_oneof_name$Case $oneof_name$_case() const;\n");
+        "void ${1$clear_$oneof_name$$}$();\n"
+        "$camel_oneof_name$Case $oneof_name$_case() const;\n", oneof);
   }
 }
 
@@ -1511,10 +1511,10 @@ void MessageGenerator::GenerateInlineMethods(io::Printer* printer) {
     format.Set("oneof_index", oneof->index());
     format(
         "inline $classname$::$camel_oneof_name$Case $classname$::"
-        "$oneof_name$_case() const {\n"
+        "${1$$oneof_name$_case$}$() const {\n"
         "  return $classname$::$camel_oneof_name$Case("
         "_oneof_case_[$oneof_index$]);\n"
-        "}\n");
+        "}\n", oneof);
   }
 }