resolve comments

pull/6181/head
yang-g 9 years ago
parent 2e08941a37
commit 25df28ef75
  1. 1
      src/compiler/cpp_generator.h
  2. 33
      src/compiler/cpp_plugin.cc
  3. 41
      src/compiler/generator_helpers.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;

@ -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:

@ -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

Loading…
Cancel
Save