Shorten type names

pull/21458/head
Richard Belleville 5 years ago
parent 0d0d2c65bc
commit 6055bc564d
  1. 57
      tools/distrib/python/grpcio_tools/grpc_tools/main.cc

@ -31,6 +31,15 @@
#include <unordered_set>
#include <vector>
using ::google::protobuf::FileDescriptor;
using ::google::protobuf::compiler::CodeGenerator;
using ::google::protobuf::compiler::DiskSourceTree;
using ::google::protobuf::compiler::GeneratorContext;
using ::google::protobuf::compiler::Importer;
using ::google::protobuf::compiler::MultiFileErrorCollector;
using ::google::protobuf::io::StringOutputStream;
using ::google::protobuf::io::ZeroCopyOutputStream;
namespace grpc_tools {
int protoc_main(int argc, char* argv[]) {
google::protobuf::compiler::CommandLineInterface cli;
@ -52,31 +61,26 @@ int protoc_main(int argc, char* argv[]) {
namespace internal {
class GeneratorContextImpl
: public ::google::protobuf::compiler::GeneratorContext {
class GeneratorContextImpl : public GeneratorContext {
public:
GeneratorContextImpl(
const std::vector<const ::google::protobuf::FileDescriptor*>&
parsed_files,
const std::vector<const FileDescriptor*>& parsed_files,
std::vector<std::pair<std::string, std::string>>* files_out)
: files_(files_out), parsed_files_(parsed_files) {}
::google::protobuf::io::ZeroCopyOutputStream* Open(
const std::string& filename) {
ZeroCopyOutputStream* Open(const std::string& filename) {
files_->emplace_back(filename, "");
return new ::google::protobuf::io::StringOutputStream(
&(files_->back().second));
return new StringOutputStream(&(files_->back().second));
}
// NOTE(rbellevi): Equivalent to Open, since all files start out empty.
::google::protobuf::io::ZeroCopyOutputStream* OpenForAppend(
const std::string& filename) {
ZeroCopyOutputStream* OpenForAppend(const std::string& filename) {
return Open(filename);
}
// NOTE(rbellevi): Equivalent to Open, since all files start out empty.
::google::protobuf::io::ZeroCopyOutputStream* OpenForInsert(
const std::string& filename, const std::string& insertion_point) {
ZeroCopyOutputStream* OpenForInsert(const std::string& filename,
const std::string& insertion_point) {
return Open(filename);
}
@ -87,11 +91,10 @@ class GeneratorContextImpl
private:
std::vector<std::pair<std::string, std::string>>* files_;
const std::vector<const ::google::protobuf::FileDescriptor*>& parsed_files_;
const std::vector<const FileDescriptor*>& parsed_files_;
};
class ErrorCollectorImpl
: public ::google::protobuf::compiler::MultiFileErrorCollector {
class ErrorCollectorImpl : public MultiFileErrorCollector {
public:
ErrorCollectorImpl(std::vector<::grpc_tools::ProtocError>* errors,
std::vector<::grpc_tools::ProtocWarning>* warnings)
@ -113,12 +116,11 @@ class ErrorCollectorImpl
};
static void calculate_transitive_closure(
const ::google::protobuf::FileDescriptor* descriptor,
std::vector<const ::google::protobuf::FileDescriptor*>* transitive_closure,
const FileDescriptor* descriptor,
std::vector<const FileDescriptor*>* transitive_closure,
std::unordered_set<const ::google::protobuf::FileDescriptor*>* visited) {
for (int i = 0; i < descriptor->dependency_count(); ++i) {
const ::google::protobuf::FileDescriptor* dependency =
descriptor->dependency(i);
const FileDescriptor* dependency = descriptor->dependency(i);
if (visited->find(dependency) == visited->end()) {
calculate_transitive_closure(dependency, transitive_closure, visited);
}
@ -130,27 +132,24 @@ static void calculate_transitive_closure(
} // end namespace internal
static int generate_code(
::google::protobuf::compiler::CodeGenerator* code_generator,
char* protobuf_path, const std::vector<std::string>* include_paths,
CodeGenerator* code_generator, char* protobuf_path,
const std::vector<std::string>* include_paths,
std::vector<std::pair<std::string, std::string>>* files_out,
std::vector<::grpc_tools::ProtocError>* errors,
std::vector<::grpc_tools::ProtocWarning>* warnings) {
std::unique_ptr<internal::ErrorCollectorImpl> error_collector(
new internal::ErrorCollectorImpl(errors, warnings));
std::unique_ptr<::google::protobuf::compiler::DiskSourceTree> source_tree(
new ::google::protobuf::compiler::DiskSourceTree());
std::unique_ptr<DiskSourceTree> source_tree(new DiskSourceTree());
for (const auto& include_path : *include_paths) {
source_tree->MapPath("", include_path);
}
::google::protobuf::compiler::Importer importer(source_tree.get(),
error_collector.get());
const ::google::protobuf::FileDescriptor* parsed_file =
importer.Import(protobuf_path);
Importer importer(source_tree.get(), error_collector.get());
const FileDescriptor* parsed_file = importer.Import(protobuf_path);
if (parsed_file == nullptr) {
return 1;
}
std::vector<const ::google::protobuf::FileDescriptor*> transitive_closure;
std::unordered_set<const ::google::protobuf::FileDescriptor*> visited;
std::vector<const FileDescriptor*> transitive_closure;
std::unordered_set<const FileDescriptor*> visited;
internal::calculate_transitive_closure(parsed_file, &transitive_closure,
&visited);
internal::GeneratorContextImpl generator_context(transitive_closure,

Loading…
Cancel
Save