aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/compiler/cpp_generator.h1
-rw-r--r--src/compiler/cpp_plugin.cc33
-rw-r--r--src/compiler/generator_helpers.h41
3 files changed, 43 insertions, 32 deletions
diff --git a/src/compiler/cpp_generator.h b/src/compiler/cpp_generator.h
index 1e68dfe3df..02f95f8cf6 100644
--- a/src/compiler/cpp_generator.h
+++ b/src/compiler/cpp_generator.h
@@ -65,6 +65,7 @@ struct Parameters {
};
// A common interface for objects having comments in the source.
+// Return formatted comments to be inserted in generated code.
struct CommentHolder {
virtual ~CommentHolder() {}
virtual grpc::string GetLeadingComments() const = 0;
diff --git a/src/compiler/cpp_plugin.cc b/src/compiler/cpp_plugin.cc
index 6128b816a4..f1a1d80939 100644
--- a/src/compiler/cpp_plugin.cc
+++ b/src/compiler/cpp_plugin.cc
@@ -43,38 +43,7 @@
#include "src/compiler/cpp_generator_helpers.h"
#include "src/compiler/generator_helpers.h"
-grpc::string GenerateComments(const std::vector<grpc::string> &in) {
- std::ostringstream oss;
- for (const grpc::string &elem : in) {
- if (elem.empty()) {
- oss << "//\n";
- } else if (elem[0] == ' ') {
- oss << "//" << elem << "\n";
- } else {
- oss << "// " << elem << "\n";
- }
- }
- return oss.str();
-}
-
-// Get leading or trailing comments in a string. Comment lines start with "// ".
-// Leading detached comments are put in in front of leading comments.
-template <typename DescriptorType>
-grpc::string GetComments(const DescriptorType *desc, bool leading) {
- std::vector<grpc::string> out;
- if (leading) {
- grpc_generator::GetComment(
- desc, grpc_generator::COMMENTTYPE_LEADING_DETACHED, &out);
- std::vector<grpc::string> leading;
- grpc_generator::GetComment(desc, grpc_generator::COMMENTTYPE_LEADING,
- &leading);
- out.insert(out.end(), leading.begin(), leading.end());
- } else {
- grpc_generator::GetComment(desc, grpc_generator::COMMENTTYPE_TRAILING,
- &out);
- }
- return GenerateComments(out);
-}
+using grpc_generator::GetComments;
class ProtoBufMethod : public grpc_cpp_generator::Method {
public:
diff --git a/src/compiler/generator_helpers.h b/src/compiler/generator_helpers.h
index 9ba7356857..6b02b37d4f 100644
--- a/src/compiler/generator_helpers.h
+++ b/src/compiler/generator_helpers.h
@@ -34,6 +34,7 @@
#ifndef GRPC_INTERNAL_COMPILER_GENERATOR_HELPERS_H
#define GRPC_INTERNAL_COMPILER_GENERATOR_HELPERS_H
+#include <iostream>
#include <map>
#include <sstream>
#include <string>
@@ -203,6 +204,7 @@ inline void GetComment(const DescriptorType *desc, CommentType type,
out->push_back("");
}
} else {
+ std::cerr << "Unknown comment type " << type << std::endl;
abort();
}
}
@@ -230,10 +232,49 @@ inline void GetComment(const grpc::protobuf::FileDescriptor *desc,
out->push_back("");
}
} else {
+ std::cerr << "Unknown comment type " << type << std::endl;
abort();
}
}
+namespace {
+
+// Prefix comment line with "// " and concatenate them into a string.
+grpc::string GenerateComments(const std::vector<grpc::string> &in) {
+ std::ostringstream oss;
+ for (const grpc::string &elem : in) {
+ if (elem.empty()) {
+ oss << "//\n";
+ } else if (elem[0] == ' ') {
+ oss << "//" << elem << "\n";
+ } else {
+ oss << "// " << elem << "\n";
+ }
+ }
+ return oss.str();
+}
+
+} // namespace
+
+// Get leading or trailing comments in a string. Comment lines start with "// ".
+// Leading detached comments are put in in front of leading comments.
+template <typename DescriptorType>
+inline grpc::string GetComments(const DescriptorType *desc, bool leading) {
+ std::vector<grpc::string> out;
+ if (leading) {
+ grpc_generator::GetComment(
+ desc, grpc_generator::COMMENTTYPE_LEADING_DETACHED, &out);
+ std::vector<grpc::string> leading;
+ grpc_generator::GetComment(desc, grpc_generator::COMMENTTYPE_LEADING,
+ &leading);
+ out.insert(out.end(), leading.begin(), leading.end());
+ } else {
+ grpc_generator::GetComment(desc, grpc_generator::COMMENTTYPE_TRAILING,
+ &out);
+ }
+ return GenerateComments(out);
+}
+
} // namespace grpc_generator
#endif // GRPC_INTERNAL_COMPILER_GENERATOR_HELPERS_H