diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/compiler/cpp_generator.h | 1 | ||||
-rw-r--r-- | src/compiler/cpp_plugin.cc | 33 | ||||
-rw-r--r-- | src/compiler/generator_helpers.h | 41 |
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 |