THRIFT-4287: Add c++ compiler no_skeleton flag option
Client: C++
This closes #1333
diff --git a/compiler/cpp/src/thrift/generate/t_cpp_generator.cc b/compiler/cpp/src/thrift/generate/t_cpp_generator.cc
index 9413b86..1c93957 100644
--- a/compiler/cpp/src/thrift/generate/t_cpp_generator.cc
+++ b/compiler/cpp/src/thrift/generate/t_cpp_generator.cc
@@ -65,6 +65,7 @@
gen_templates_only_ = false;
gen_moveable_ = false;
gen_no_ostream_operators_ = false;
+ gen_no_skeleton_ = false;
for( iter = parsed_options.begin(); iter != parsed_options.end(); ++iter) {
if( iter->first.compare("pure_enums") == 0) {
@@ -84,6 +85,8 @@
gen_moveable_ = true;
} else if ( iter->first.compare("no_ostream_operators") == 0) {
gen_no_ostream_operators_ = true;
+ } else if ( iter->first.compare("no_skeleton") == 0) {
+ gen_no_skeleton_ = true;
} else {
throw "unknown option cpp:" + iter->first;
}
@@ -338,6 +341,11 @@
*/
bool gen_no_default_operators_;
+ /**
+ * True if we should generate skeleton.
+ */
+ bool gen_no_skeleton_;
+
/**
* Strings for namespace, computed once up front then used directly
*/
@@ -1769,9 +1777,13 @@
generate_service_client(tservice, "");
generate_service_processor(tservice, "");
generate_service_multiface(tservice);
- generate_service_skeleton(tservice);
generate_service_client(tservice, "Concurrent");
+ // Generate skeleton
+ if (!gen_no_skeleton_) {
+ generate_service_skeleton(tservice);
+ }
+
// Generate all the cob components
if (gen_cob_style_) {
generate_service_interface(tservice, "CobCl");
@@ -1780,7 +1792,11 @@
generate_service_null(tservice, "CobSv");
generate_service_client(tservice, "Cob");
generate_service_processor(tservice, "Cob");
- generate_service_async_skeleton(tservice);
+
+ if (!gen_no_skeleton_) {
+ generate_service_async_skeleton(tservice);
+ }
+
}
f_header_ << "#ifdef _MSC_VER\n"
@@ -4466,4 +4482,5 @@
" include_prefix: Use full include paths in generated files.\n"
" moveable_types: Generate move constructors and assignment operators.\n"
" no_ostream_operators:\n"
- " Omit generation of ostream definitions.\n")
+ " Omit generation of ostream definitions.\n"
+ " no_skeleton: Omits generation of skeleton.\n")