aboutsummaryrefslogtreecommitdiffhomepage
path: root/tools
diff options
context:
space:
mode:
authorGravatar chedeti <chedeti@google.com>2016-08-05 11:15:37 -0700
committerGravatar chedeti <chedeti@google.com>2016-08-05 11:15:37 -0700
commit7e024be839687470bd1343f70f08ec1e703eb9ec (patch)
tree2c42fb3ccf87e9bb48f229b076fa84aa1cca77e0 /tools
parentd07c17e3430bbf1cc1a802b76cf57175bbb6603c (diff)
fix multilevel inheritence codegen
Diffstat (limited to 'tools')
-rw-r--r--tools/grift/grpc_plugins_generator.patch75
1 files changed, 43 insertions, 32 deletions
diff --git a/tools/grift/grpc_plugins_generator.patch b/tools/grift/grpc_plugins_generator.patch
index a1d4cecde0..de82a01f62 100644
--- a/tools/grift/grpc_plugins_generator.patch
+++ b/tools/grift/grpc_plugins_generator.patch
@@ -59,21 +59,21 @@ index 6fd15d2..7de1fad 100755
2.8.0.rc3.226.g39d4020
-From e724d3abf096278615085bd58217321e32b43fd8 Mon Sep 17 00:00:00 2001
+From 387e4300bc9d98176a92a7c010621443a538e7f2 Mon Sep 17 00:00:00 2001
From: chedeti <chedeti@google.com>
Date: Sun, 31 Jul 2016 16:16:40 -0700
Subject: [PATCH 2/3] grpc cpp plugins generator with example
---
- compiler/cpp/src/generate/t_cpp_generator.cc | 478 +++++++++++++++++++++++----
+ compiler/cpp/src/generate/t_cpp_generator.cc | 489 +++++++++++++++++++++++----
tutorial/cpp/CMakeLists.txt | 53 ---
tutorial/cpp/CppClient.cpp | 80 -----
tutorial/cpp/CppServer.cpp | 181 ----------
- tutorial/cpp/GriftClient.cpp | 93 ++++++
- tutorial/cpp/GriftServer.cpp | 93 ++++++
+ tutorial/cpp/GriftClient.cpp | 93 +++++
+ tutorial/cpp/GriftServer.cpp | 93 +++++
tutorial/cpp/Makefile.am | 66 ++--
tutorial/cpp/test.thrift | 13 +
- 8 files changed, 641 insertions(+), 416 deletions(-)
+ 8 files changed, 652 insertions(+), 416 deletions(-)
delete mode 100644 tutorial/cpp/CMakeLists.txt
delete mode 100644 tutorial/cpp/CppClient.cpp
delete mode 100644 tutorial/cpp/CppServer.cpp
@@ -82,7 +82,7 @@ Subject: [PATCH 2/3] grpc cpp plugins generator with example
create mode 100644 tutorial/cpp/test.thrift
diff --git a/compiler/cpp/src/generate/t_cpp_generator.cc b/compiler/cpp/src/generate/t_cpp_generator.cc
-index 6c04899..4e00129 100644
+index 6c04899..1557241 100644
--- a/compiler/cpp/src/generate/t_cpp_generator.cc
+++ b/compiler/cpp/src/generate/t_cpp_generator.cc
@@ -162,6 +162,8 @@ public:
@@ -328,7 +328,7 @@ index 6c04899..4e00129 100644
<< endl;
f_service_tcc_ << "#ifndef " << svcname << "_TCC" << endl << "#define " << svcname << "_TCC"
-@@ -1663,19 +1704,66 @@ void t_cpp_generator::generate_service(t_service* tservice) {
+@@ -1663,19 +1704,69 @@ void t_cpp_generator::generate_service(t_service* tservice) {
}
}
@@ -361,15 +361,18 @@ index 6c04899..4e00129 100644
+ indent() << "\"/" << ns << "." << service_name_ << "/" << (*f_iter)->get_name() << "\"," << endl;
+ }
+
-+ if (extends_service) {
-+ vector<t_function*> functions = extends_service->get_functions();
++
++ t_service* service_iter = extends_service;
++ while (service_iter) {
++ vector<t_function*> functions = service_iter->get_functions();
+ vector<t_function*>::iterator f_iter;
+
+ for ( f_iter = functions.begin(); f_iter != functions.end(); ++f_iter) {
+ f_service_ <<
-+ indent() << "\"/" << extends_service->get_program()->get_namespace("cpp") <<
-+ "." << extends_service->get_name() << "/" << (*f_iter)->get_name() << "\"," << endl;
++ indent() << "\"/" << service_iter->get_program()->get_namespace("cpp") <<
++ "." << service_iter->get_name() << "/" << (*f_iter)->get_name() << "\"," << endl;
+ }
++ service_iter = service_iter->get_extends();
+ }
+
+ indent_down();
@@ -403,7 +406,7 @@ index 6c04899..4e00129 100644
// Generate all the cob components
if (gen_cob_style_) {
-@@ -1688,10 +1776,14 @@ void t_cpp_generator::generate_service(t_service* tservice) {
+@@ -1688,10 +1779,14 @@ void t_cpp_generator::generate_service(t_service* tservice) {
generate_service_async_skeleton(tservice);
}
@@ -418,7 +421,7 @@ index 6c04899..4e00129 100644
// Close the namespace
f_service_ << ns_close_ << endl << endl;
f_service_tcc_ << ns_close_ << endl << endl;
-@@ -1729,15 +1821,11 @@ void t_cpp_generator::generate_service_helpers(t_service* tservice) {
+@@ -1729,15 +1824,11 @@ void t_cpp_generator::generate_service_helpers(t_service* tservice) {
string name_orig = ts->get_name();
// TODO(dreiss): Why is this stuff not in generate_function_helpers?
@@ -436,7 +439,7 @@ index 6c04899..4e00129 100644
ts->set_name(name_orig);
generate_function_helpers(tservice, *f_iter);
-@@ -1745,13 +1833,210 @@ void t_cpp_generator::generate_service_helpers(t_service* tservice) {
+@@ -1745,13 +1836,218 @@ void t_cpp_generator::generate_service_helpers(t_service* tservice) {
}
/**
@@ -497,9 +500,10 @@ index 6c04899..4e00129 100644
+ }
+
+ t_service* extends_service = tservice->get_extends();
-+ if (extends_service) {
++ t_service* service_iter = extends_service;
++ while (service_iter) {
+ // generate inherited methods
-+ vector<t_function*> functions = extends_service->get_functions();
++ vector<t_function*> functions = service_iter->get_functions();
+ vector<t_function*>::iterator f_iter;
+ for (f_iter = functions.begin(); f_iter != functions.end(); ++f_iter) {
+ string function_name = (*f_iter)->get_name();
@@ -508,6 +512,7 @@ index 6c04899..4e00129 100644
+ "(::grpc::ClientContext* context, const " << function_name <<
+ "Req& request, " << function_name << "Resp* response) override;" << endl;
+ }
++ service_iter = service_iter->get_extends();
+ }
+
+ f_header_ <<
@@ -521,14 +526,16 @@ index 6c04899..4e00129 100644
+ indent() << "const ::grpc::RpcMethod rpcmethod_" << (*f_iter)->get_name() << "_;" << endl;
+ }
+
-+ if (extends_service) {
++ service_iter = extends_service;
++ while (service_iter) {
+ // generate inherited methods
-+ vector<t_function*> functions = extends_service->get_functions();
++ vector<t_function*> functions = service_iter->get_functions();
+ vector<t_function*>::iterator f_iter;
+ for (f_iter = functions.begin(); f_iter != functions.end(); ++f_iter) {
+ f_header_ <<
+ indent() << "const ::grpc::RpcMethod rpcmethod_" << (*f_iter)->get_name() << "_;" << endl;
+ }
++ service_iter = service_iter->get_extends();
+ }
+
+ indent_down();
@@ -551,9 +558,10 @@ index 6c04899..4e00129 100644
+ service_name_ << "_method_names[" << i << "], ::grpc::RpcMethod::NORMAL_RPC, channel)" << endl;
+ }
+
-+ if (extends_service) {
++ service_iter = extends_service;
++ while (service_iter) {
+ // generate inherited methods
-+ vector<t_function*> functions = extends_service->get_functions();
++ vector<t_function*> functions = service_iter->get_functions();
+ vector<t_function*>::iterator f_iter;
+ for (f_iter = functions.begin(); f_iter != functions.end(); ++f_iter, ++i) {
+ f_service_ <<
@@ -561,6 +569,7 @@ index 6c04899..4e00129 100644
+ ", rpcmethod_" << (*f_iter)->get_name() << "_(" <<
+ service_name_ << "_method_names[" << i << "], ::grpc::RpcMethod::NORMAL_RPC, channel)" << endl;
+ }
++ service_iter = service_iter->get_extends();
+ }
+ f_service_ <<
+ indent() << "{}" << endl;
@@ -609,8 +618,9 @@ index 6c04899..4e00129 100644
+
+ }
+
-+ if (extends_service) {
-+ vector<t_function*> functions = extends_service->get_functions();
++ service_iter = extends_service;
++ while (service_iter) {
++ vector<t_function*> functions = service_iter->get_functions();
+ vector<t_function*>::iterator f_iter;
+ for (f_iter = functions.begin(); f_iter != functions.end(); ++f_iter) {
+ string function_name = (*f_iter)->get_name();
@@ -631,6 +641,7 @@ index 6c04899..4e00129 100644
+ "}" << endl;
+
+ }
++ service_iter = service_iter->get_extends();
+ }
+
+}
@@ -648,7 +659,7 @@ index 6c04899..4e00129 100644
if (style == "CobCl") {
// Forward declare the client.
string client_name = service_name_ + "CobClient";
-@@ -1764,13 +2049,15 @@ void t_cpp_generator::generate_service_interface(t_service* tservice, string sty
+@@ -1764,13 +2060,15 @@ void t_cpp_generator::generate_service_interface(t_service* tservice, string sty
}
string extends = "";
@@ -666,7 +677,7 @@ index 6c04899..4e00129 100644
}
if (style == "CobCl" && gen_templates_) {
-@@ -1778,7 +2065,9 @@ void t_cpp_generator::generate_service_interface(t_service* tservice, string sty
+@@ -1778,7 +2076,9 @@ void t_cpp_generator::generate_service_interface(t_service* tservice, string sty
}
f_header_ << "class " << service_if_name << extends << " {" << endl << " public:" << endl;
indent_up();
@@ -677,7 +688,7 @@ index 6c04899..4e00129 100644
vector<t_function*> functions = tservice->get_functions();
vector<t_function*>::iterator f_iter;
-@@ -1786,7 +2075,12 @@ void t_cpp_generator::generate_service_interface(t_service* tservice, string sty
+@@ -1786,7 +2086,12 @@ void t_cpp_generator::generate_service_interface(t_service* tservice, string sty
if ((*f_iter)->has_doc())
f_header_ << endl;
generate_java_doc(f_header_, *f_iter);
@@ -691,7 +702,7 @@ index 6c04899..4e00129 100644
}
indent_down();
f_header_ << "};" << endl << endl;
-@@ -1797,6 +2091,66 @@ void t_cpp_generator::generate_service_interface(t_service* tservice, string sty
+@@ -1797,6 +2102,66 @@ void t_cpp_generator::generate_service_interface(t_service* tservice, string sty
f_header_ << "typedef " << service_if_name << "< ::apache::thrift::protocol::TProtocol> "
<< service_name_ << style << "If;" << endl << endl;
}
@@ -758,7 +769,7 @@ index 6c04899..4e00129 100644
}
/**
-@@ -3095,7 +3449,7 @@ void t_cpp_generator::generate_function_helpers(t_service* tservice, t_function*
+@@ -3095,7 +3460,7 @@ void t_cpp_generator::generate_function_helpers(t_service* tservice, t_function*
std::ofstream& out = (gen_templates_ ? f_service_tcc_ : f_service_);
@@ -767,7 +778,7 @@ index 6c04899..4e00129 100644
t_field success(tfunction->get_returntype(), "success", 0);
if (!tfunction->get_returntype()->is_void()) {
result.append(&success);
-@@ -3109,17 +3463,9 @@ void t_cpp_generator::generate_function_helpers(t_service* tservice, t_function*
+@@ -3109,17 +3474,9 @@ void t_cpp_generator::generate_function_helpers(t_service* tservice, t_function*
}
generate_struct_declaration(f_header_, &result, false);
@@ -786,7 +797,7 @@ index 6c04899..4e00129 100644
}
/**
-@@ -3162,8 +3508,8 @@ void t_cpp_generator::generate_process_function(t_service* tservice,
+@@ -3162,8 +3519,8 @@ void t_cpp_generator::generate_process_function(t_service* tservice,
<< endl;
scope_up(out);
@@ -797,7 +808,7 @@ index 6c04899..4e00129 100644
if (tfunction->is_oneway() && !unnamed_oprot_seqid) {
out << indent() << "(void) seqid;" << endl << indent() << "(void) oprot;" << endl;
-@@ -3320,7 +3666,7 @@ void t_cpp_generator::generate_process_function(t_service* tservice,
+@@ -3320,7 +3677,7 @@ void t_cpp_generator::generate_process_function(t_service* tservice,
out << indent() << "(void) seqid;" << endl << indent() << "(void) oprot;" << endl;
}
@@ -806,7 +817,7 @@ index 6c04899..4e00129 100644
<< indent() << "void* ctx = NULL;" << endl << indent()
<< "if (this->eventHandler_.get() != NULL) {" << endl << indent()
<< " ctx = this->eventHandler_->getContext(" << service_func_name << ", NULL);" << endl
-@@ -3487,7 +3833,7 @@ void t_cpp_generator::generate_process_function(t_service* tservice,
+@@ -3487,7 +3844,7 @@ void t_cpp_generator::generate_process_function(t_service* tservice,
<< "this->eventHandler_.get(), ctx, " << service_func_name << ");" << endl << endl;
// Throw the TDelayedException, and catch the result
@@ -1475,7 +1486,7 @@ index 0000000..de3c9a4
2.8.0.rc3.226.g39d4020
-From f991f33dd6461eae197b6ad0e7088b571f2a7b22 Mon Sep 17 00:00:00 2001
+From 3e4d75a2e2c474ee7700e7c9acaf89fdb768bedc Mon Sep 17 00:00:00 2001
From: chedeti <chedeti@google.com>
Date: Sun, 31 Jul 2016 16:23:53 -0700
Subject: [PATCH 3/3] grpc java plugins generator