| 
					
				 | 
			
			
				@@ -26,7 +26,7 @@ namespace grpc_cpp_generator { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 namespace { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 template <class T> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-grpc::string as_string(T x) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+std::string as_string(T x) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   std::ostringstream out; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   out << x; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   return out.str(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -40,8 +40,8 @@ inline bool ServerOnlyStreaming(const grpc_generator::Method* method) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   return !method->ClientStreaming() && method->ServerStreaming(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-grpc::string FilenameIdentifier(const grpc::string& filename) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  grpc::string result; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+std::string FilenameIdentifier(const std::string& filename) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  std::string result; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   for (unsigned i = 0; i < filename.size(); i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     char c = filename[i]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     if (isalnum(c)) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -63,9 +63,9 @@ T* array_end(T (&array)[N]) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 void PrintIncludes(grpc_generator::Printer* printer, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                   const std::vector<grpc::string>& headers, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                   bool use_system_headers, const grpc::string& search_path) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  std::map<grpc::string, grpc::string> vars; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                   const std::vector<std::string>& headers, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                   bool use_system_headers, const std::string& search_path) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  std::map<std::string, std::string> vars; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   vars["l"] = use_system_headers ? '<' : '"'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   vars["r"] = use_system_headers ? '>' : '"'; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -83,13 +83,13 @@ void PrintIncludes(grpc_generator::Printer* printer, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-grpc::string GetHeaderPrologue(grpc_generator::File* file, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                               const Parameters& params) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  grpc::string output; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+std::string GetHeaderPrologue(grpc_generator::File* file, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                              const Parameters& params) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  std::string output; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // Scope the output stream so it closes and finalizes output to the string. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     auto printer = file->CreatePrinter(&output); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    std::map<grpc::string, grpc::string> vars; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    std::map<std::string, std::string> vars; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     vars["filename"] = file->filename(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     vars["filename_identifier"] = FilenameIdentifier(file->filename()); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -102,7 +102,7 @@ grpc::string GetHeaderPrologue(grpc_generator::File* file, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     printer->Print(vars, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    "// If you make any local change, they will be lost.\n"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     printer->Print(vars, "// source: $filename$\n"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    grpc::string leading_comments = file->GetLeadingComments("//"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    std::string leading_comments = file->GetLeadingComments("//"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     if (!leading_comments.empty()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       printer->Print(vars, "// Original file comments:\n"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       printer->PrintRaw(leading_comments.c_str()); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -118,19 +118,19 @@ grpc::string GetHeaderPrologue(grpc_generator::File* file, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 // Convert from "a/b/c.proto" to "#include \"a/b/c$message_header_ext$\"\n" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-grpc::string ImportInludeFromProtoName(const grpc::string& proto_name) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  return grpc::string("#include \"") + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+std::string ImportInludeFromProtoName(const std::string& proto_name) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  return std::string("#include \"") + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				          proto_name.substr(0, proto_name.size() - 6) + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-         grpc::string("$message_header_ext$\"\n"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+         std::string("$message_header_ext$\"\n"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-grpc::string GetHeaderIncludes(grpc_generator::File* file, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                               const Parameters& params) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  grpc::string output; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+std::string GetHeaderIncludes(grpc_generator::File* file, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                              const Parameters& params) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  std::string output; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // Scope the output stream so it closes and finalizes output to the string. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     auto printer = file->CreatePrinter(&output); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    std::map<grpc::string, grpc::string> vars; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    std::map<std::string, std::string> vars; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     if (!params.additional_header_includes.empty()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       PrintIncludes(printer.get(), params.additional_header_includes, false, 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -160,7 +160,7 @@ grpc::string GetHeaderIncludes(grpc_generator::File* file, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         "grpcpp/impl/codegen/stub_options.h", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         "grpcpp/impl/codegen/sync_stream.h", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    std::vector<grpc::string> headers(headers_strs, array_end(headers_strs)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    std::vector<std::string> headers(headers_strs, array_end(headers_strs)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     PrintIncludes(printer.get(), headers, params.use_system_headers, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                   params.grpc_search_path); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     printer->Print(vars, "\n"); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -170,17 +170,16 @@ grpc::string GetHeaderIncludes(grpc_generator::File* file, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                      : params.message_header_extension; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     if (params.include_import_headers) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      const std::vector<grpc::string> import_names = file->GetImportNames(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      const std::vector<std::string> import_names = file->GetImportNames(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       for (const auto& import_name : import_names) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        const grpc::string include_name = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            ImportInludeFromProtoName(import_name); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        const std::string include_name = ImportInludeFromProtoName(import_name); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         printer->Print(vars, include_name.c_str()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       printer->PrintRaw("\n"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     if (!file->package().empty()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      std::vector<grpc::string> parts = file->package_parts(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      std::vector<std::string> parts = file->package_parts(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       for (auto part = parts.begin(); part != parts.end(); part++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         vars["part"] = *part; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -192,17 +191,18 @@ grpc::string GetHeaderIncludes(grpc_generator::File* file, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   return output; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-void PrintHeaderClientMethodInterfaces( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    grpc_generator::Printer* printer, const grpc_generator::Method* method, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    std::map<grpc::string, grpc::string>* vars, bool is_public) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+void PrintHeaderClientMethodInterfaces(grpc_generator::Printer* printer, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                       const grpc_generator::Method* method, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                       std::map<std::string, std::string>* vars, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                       bool is_public) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   (*vars)["Method"] = method->name(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   (*vars)["Request"] = method->input_type_name(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   (*vars)["Response"] = method->output_type_name(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   struct { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    grpc::string prefix; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    grpc::string method_params;  // extra arguments to method 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    grpc::string raw_args;       // extra arguments to raw version of method 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    std::string prefix; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    std::string method_params;  // extra arguments to method 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    std::string raw_args;       // extra arguments to raw version of method 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } async_prefixes[] = {{"Async", ", void* tag", ", tag"}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         {"PrepareAsync", "", ""}}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -392,15 +392,15 @@ void PrintHeaderClientMethodInterfaces( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 void PrintHeaderClientMethod(grpc_generator::Printer* printer, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                              const grpc_generator::Method* method, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                             std::map<grpc::string, grpc::string>* vars, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                             std::map<std::string, std::string>* vars, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                              bool is_public) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   (*vars)["Method"] = method->name(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   (*vars)["Request"] = method->input_type_name(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   (*vars)["Response"] = method->output_type_name(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   struct { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    grpc::string prefix; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    grpc::string method_params;  // extra arguments to method 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    grpc::string raw_args;       // extra arguments to raw version of method 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    std::string prefix; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    std::string method_params;  // extra arguments to method 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    std::string raw_args;       // extra arguments to raw version of method 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } async_prefixes[] = {{"Async", ", void* tag", ", tag"}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         {"PrepareAsync", "", ""}}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -579,7 +579,7 @@ void PrintHeaderClientMethod(grpc_generator::Printer* printer, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 void PrintHeaderClientMethodCallbackInterfacesStart( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     grpc_generator::Printer* printer, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    std::map<grpc::string, grpc::string>* /*vars*/) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    std::map<std::string, std::string>* /*vars*/) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   // This declares the interface for the callback-based API. The components 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   // are pure; even though this is new (post-1.0) API, it can be pure because 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   // it is an entirely new interface that happens to be scoped within 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -594,7 +594,7 @@ void PrintHeaderClientMethodCallbackInterfacesStart( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 void PrintHeaderClientMethodCallbackInterfaces( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     grpc_generator::Printer* printer, const grpc_generator::Method* method, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    std::map<grpc::string, grpc::string>* vars) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    std::map<std::string, std::string>* vars) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   (*vars)["Method"] = method->name(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   (*vars)["Request"] = method->input_type_name(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   (*vars)["Response"] = method->output_type_name(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -672,7 +672,7 @@ void PrintHeaderClientMethodCallbackInterfaces( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 void PrintHeaderClientMethodCallbackInterfacesEnd( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     grpc_generator::Printer* printer, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    std::map<grpc::string, grpc::string>* /*vars*/) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    std::map<std::string, std::string>* /*vars*/) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   printer->Outdent(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   printer->Print("};\n"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   printer->Print( 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -696,7 +696,7 @@ void PrintHeaderClientMethodCallbackInterfacesEnd( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 void PrintHeaderClientMethodCallbackStart( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     grpc_generator::Printer* printer, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    std::map<grpc::string, grpc::string>* /*vars*/) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    std::map<std::string, std::string>* /*vars*/) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   // This declares the stub entry for the callback-based API. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   printer->Print("class experimental_async final :\n"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   printer->Print("  public StubInterface::experimental_async_interface {\n"); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -704,9 +704,9 @@ void PrintHeaderClientMethodCallbackStart( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   printer->Indent(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-void PrintHeaderClientMethodCallback( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    grpc_generator::Printer* printer, const grpc_generator::Method* method, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    std::map<grpc::string, grpc::string>* vars) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+void PrintHeaderClientMethodCallback(grpc_generator::Printer* printer, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                     const grpc_generator::Method* method, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                     std::map<std::string, std::string>* vars) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   (*vars)["Method"] = method->name(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   (*vars)["Request"] = method->input_type_name(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   (*vars)["Response"] = method->output_type_name(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -785,7 +785,7 @@ void PrintHeaderClientMethodCallback( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 void PrintHeaderClientMethodCallbackEnd( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     grpc_generator::Printer* printer, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    std::map<grpc::string, grpc::string>* /*vars*/) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    std::map<std::string, std::string>* /*vars*/) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   printer->Outdent(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   printer->Print(" private:\n"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   printer->Indent(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -805,7 +805,7 @@ void PrintHeaderClientMethodCallbackEnd( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 void PrintHeaderClientMethodData(grpc_generator::Printer* printer, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                  const grpc_generator::Method* method, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                 std::map<grpc::string, grpc::string>* vars) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                 std::map<std::string, std::string>* vars) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   (*vars)["Method"] = method->name(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   printer->Print(*vars, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                  "const ::grpc::internal::RpcMethod rpcmethod_$Method$_;\n"); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -813,7 +813,7 @@ void PrintHeaderClientMethodData(grpc_generator::Printer* printer, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 void PrintHeaderServerMethodSync(grpc_generator::Printer* printer, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                  const grpc_generator::Method* method, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                 std::map<grpc::string, grpc::string>* vars) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                 std::map<std::string, std::string>* vars) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   (*vars)["Method"] = method->name(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   (*vars)["Request"] = method->input_type_name(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   (*vars)["Response"] = method->output_type_name(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -850,7 +850,7 @@ void PrintHeaderServerMethodSync(grpc_generator::Printer* printer, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 // to generate async and raw async APIs. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 void PrintHeaderServerAsyncMethodsHelper( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     grpc_generator::Printer* printer, const grpc_generator::Method* method, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    std::map<grpc::string, grpc::string>* vars) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    std::map<std::string, std::string>* vars) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   if (method->NoStreaming()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     printer->Print( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         *vars, 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -945,7 +945,7 @@ void PrintHeaderServerAsyncMethodsHelper( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 void PrintHeaderServerMethodAsync(grpc_generator::Printer* printer, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                   const grpc_generator::Method* method, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                  std::map<grpc::string, grpc::string>* vars) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                  std::map<std::string, std::string>* vars) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   (*vars)["Method"] = method->name(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   // These will be disabled 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   (*vars)["Request"] = method->input_type_name(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -980,7 +980,7 @@ void PrintHeaderServerMethodAsync(grpc_generator::Printer* printer, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 // to generate callback and raw callback APIs. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 void PrintHeaderServerCallbackMethodsHelper( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     grpc_generator::Printer* printer, const grpc_generator::Method* method, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    std::map<grpc::string, grpc::string>* vars) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    std::map<std::string, std::string>* vars) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   if (method->NoStreaming()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     printer->Print( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         *vars, 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1080,9 +1080,9 @@ void PrintHeaderServerCallbackMethodsHelper( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-void PrintHeaderServerMethodCallback( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    grpc_generator::Printer* printer, const grpc_generator::Method* method, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    std::map<grpc::string, grpc::string>* vars) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+void PrintHeaderServerMethodCallback(grpc_generator::Printer* printer, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                     const grpc_generator::Method* method, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                     std::map<std::string, std::string>* vars) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   (*vars)["Method"] = method->name(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   // These will be disabled 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   (*vars)["Request"] = method->input_type_name(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1211,7 +1211,7 @@ void PrintHeaderServerMethodCallback( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 void PrintHeaderServerMethodRawCallback( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     grpc_generator::Printer* printer, const grpc_generator::Method* method, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    std::map<grpc::string, grpc::string>* vars) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    std::map<std::string, std::string>* vars) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   (*vars)["Method"] = method->name(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   // These will be disabled 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   (*vars)["Request"] = method->input_type_name(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1325,7 +1325,7 @@ void PrintHeaderServerMethodRawCallback( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 void PrintHeaderServerMethodStreamedUnary( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     grpc_generator::Printer* printer, const grpc_generator::Method* method, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    std::map<grpc::string, grpc::string>* vars) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    std::map<std::string, std::string>* vars) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   (*vars)["Method"] = method->name(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   (*vars)["Request"] = method->input_type_name(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   (*vars)["Response"] = method->output_type_name(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1379,7 +1379,7 @@ void PrintHeaderServerMethodStreamedUnary( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 void PrintHeaderServerMethodSplitStreaming( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     grpc_generator::Printer* printer, const grpc_generator::Method* method, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    std::map<grpc::string, grpc::string>* vars) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    std::map<std::string, std::string>* vars) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   (*vars)["Method"] = method->name(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   (*vars)["Request"] = method->input_type_name(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   (*vars)["Response"] = method->output_type_name(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1432,9 +1432,9 @@ void PrintHeaderServerMethodSplitStreaming( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-void PrintHeaderServerMethodGeneric( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    grpc_generator::Printer* printer, const grpc_generator::Method* method, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    std::map<grpc::string, grpc::string>* vars) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+void PrintHeaderServerMethodGeneric(grpc_generator::Printer* printer, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                    const grpc_generator::Method* method, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                    std::map<std::string, std::string>* vars) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   (*vars)["Method"] = method->name(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   (*vars)["Request"] = method->input_type_name(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   (*vars)["Response"] = method->output_type_name(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1505,7 +1505,7 @@ void PrintHeaderServerMethodGeneric( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 void PrintHeaderServerMethodRaw(grpc_generator::Printer* printer, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                 const grpc_generator::Method* method, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                std::map<grpc::string, grpc::string>* vars) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                std::map<std::string, std::string>* vars) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   (*vars)["Method"] = method->name(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   // These will be disabled 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   (*vars)["Request"] = method->input_type_name(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1536,7 +1536,7 @@ void PrintHeaderServerMethodRaw(grpc_generator::Printer* printer, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 void PrintHeaderService(grpc_generator::Printer* printer, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         const grpc_generator::Service* service, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        std::map<grpc::string, grpc::string>* vars) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        std::map<std::string, std::string>* vars) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   (*vars)["Service"] = service->name(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   printer->Print(service->GetLeadingComments("//").c_str()); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1769,13 +1769,13 @@ void PrintHeaderService(grpc_generator::Printer* printer, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   printer->Print(service->GetTrailingComments("//").c_str()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-grpc::string GetHeaderServices(grpc_generator::File* file, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                               const Parameters& params) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  grpc::string output; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+std::string GetHeaderServices(grpc_generator::File* file, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                              const Parameters& params) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  std::string output; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // Scope the output stream so it closes and finalizes output to the string. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     auto printer = file->CreatePrinter(&output); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    std::map<grpc::string, grpc::string> vars; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    std::map<std::string, std::string> vars; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // Package string is empty or ends with a dot. It is used to fully qualify 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // method names. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     vars["Package"] = file->package(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1800,19 +1800,19 @@ grpc::string GetHeaderServices(grpc_generator::File* file, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   return output; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-grpc::string GetHeaderEpilogue(grpc_generator::File* file, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                               const Parameters& /*params*/) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  grpc::string output; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+std::string GetHeaderEpilogue(grpc_generator::File* file, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                              const Parameters& /*params*/) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  std::string output; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // Scope the output stream so it closes and finalizes output to the string. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     auto printer = file->CreatePrinter(&output); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    std::map<grpc::string, grpc::string> vars; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    std::map<std::string, std::string> vars; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     vars["filename"] = file->filename(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     vars["filename_identifier"] = FilenameIdentifier(file->filename()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     if (!file->package().empty()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      std::vector<grpc::string> parts = file->package_parts(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      std::vector<std::string> parts = file->package_parts(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       for (auto part = parts.rbegin(); part != parts.rend(); part++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         vars["part"] = *part; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1829,13 +1829,13 @@ grpc::string GetHeaderEpilogue(grpc_generator::File* file, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   return output; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-grpc::string GetSourcePrologue(grpc_generator::File* file, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                               const Parameters& params) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  grpc::string output; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+std::string GetSourcePrologue(grpc_generator::File* file, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                              const Parameters& params) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  std::string output; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // Scope the output stream so it closes and finalizes output to the string. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     auto printer = file->CreatePrinter(&output); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    std::map<grpc::string, grpc::string> vars; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    std::map<std::string, std::string> vars; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     vars["filename"] = file->filename(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     vars["filename_base"] = file->filename_without_ext(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1856,13 +1856,13 @@ grpc::string GetSourcePrologue(grpc_generator::File* file, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   return output; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-grpc::string GetSourceIncludes(grpc_generator::File* file, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                               const Parameters& params) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  grpc::string output; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+std::string GetSourceIncludes(grpc_generator::File* file, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                              const Parameters& params) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  std::string output; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // Scope the output stream so it closes and finalizes output to the string. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     auto printer = file->CreatePrinter(&output); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    std::map<grpc::string, grpc::string> vars; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    std::map<std::string, std::string> vars; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     static const char* headers_strs[] = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         "functional", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         "grpcpp/impl/codegen/async_stream.h", 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1878,12 +1878,12 @@ grpc::string GetSourceIncludes(grpc_generator::File* file, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         "grpcpp/impl/codegen/server_context.h", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         "grpcpp/impl/codegen/service_type.h", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         "grpcpp/impl/codegen/sync_stream.h"}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    std::vector<grpc::string> headers(headers_strs, array_end(headers_strs)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    std::vector<std::string> headers(headers_strs, array_end(headers_strs)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     PrintIncludes(printer.get(), headers, params.use_system_headers, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                   params.grpc_search_path); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     if (!file->package().empty()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      std::vector<grpc::string> parts = file->package_parts(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      std::vector<std::string> parts = file->package_parts(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       for (auto part = parts.begin(); part != parts.end(); part++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         vars["part"] = *part; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1898,15 +1898,15 @@ grpc::string GetSourceIncludes(grpc_generator::File* file, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 void PrintSourceClientMethod(grpc_generator::Printer* printer, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                              const grpc_generator::Method* method, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                             std::map<grpc::string, grpc::string>* vars) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                             std::map<std::string, std::string>* vars) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   (*vars)["Method"] = method->name(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   (*vars)["Request"] = method->input_type_name(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   (*vars)["Response"] = method->output_type_name(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   struct { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    grpc::string prefix; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    grpc::string start;          // bool literal expressed as string 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    grpc::string method_params;  // extra arguments to method 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    grpc::string create_args;    // extra arguments to creator 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    std::string prefix; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    std::string start;          // bool literal expressed as string 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    std::string method_params;  // extra arguments to method 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    std::string create_args;    // extra arguments to creator 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } async_prefixes[] = {{"Async", "true", ", void* tag", ", tag"}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         {"PrepareAsync", "false", "", ", nullptr"}}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   if (method->NoStreaming()) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2122,7 +2122,7 @@ void PrintSourceClientMethod(grpc_generator::Printer* printer, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 void PrintSourceServerMethod(grpc_generator::Printer* printer, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                              const grpc_generator::Method* method, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                             std::map<grpc::string, grpc::string>* vars) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                             std::map<std::string, std::string>* vars) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   (*vars)["Method"] = method->name(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   (*vars)["Request"] = method->input_type_name(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   (*vars)["Response"] = method->output_type_name(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2181,7 +2181,7 @@ void PrintSourceServerMethod(grpc_generator::Printer* printer, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 void PrintSourceService(grpc_generator::Printer* printer, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         const grpc_generator::Service* service, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        std::map<grpc::string, grpc::string>* vars) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        std::map<std::string, std::string>* vars) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   (*vars)["Service"] = service->name(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   if (service->method_count() > 0) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2316,13 +2316,13 @@ void PrintSourceService(grpc_generator::Printer* printer, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-grpc::string GetSourceServices(grpc_generator::File* file, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                               const Parameters& params) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  grpc::string output; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+std::string GetSourceServices(grpc_generator::File* file, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                              const Parameters& params) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  std::string output; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // Scope the output stream so it closes and finalizes output to the string. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     auto printer = file->CreatePrinter(&output); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    std::map<grpc::string, grpc::string> vars; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    std::map<std::string, std::string> vars; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // Package string is empty or ends with a dot. It is used to fully qualify 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // method names. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     vars["Package"] = file->package(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2345,12 +2345,12 @@ grpc::string GetSourceServices(grpc_generator::File* file, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   return output; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-grpc::string GetSourceEpilogue(grpc_generator::File* file, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                               const Parameters& /*params*/) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  grpc::string temp; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+std::string GetSourceEpilogue(grpc_generator::File* file, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                              const Parameters& /*params*/) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  std::string temp; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   if (!file->package().empty()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    std::vector<grpc::string> parts = file->package_parts(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    std::vector<std::string> parts = file->package_parts(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     for (auto part = parts.begin(); part != parts.end(); part++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       temp.append("}  // namespace "); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2364,13 +2364,13 @@ grpc::string GetSourceEpilogue(grpc_generator::File* file, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 // TODO(mmukhi): Make sure we need parameters or not. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-grpc::string GetMockPrologue(grpc_generator::File* file, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                             const Parameters& params) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  grpc::string output; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+std::string GetMockPrologue(grpc_generator::File* file, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            const Parameters& params) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  std::string output; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // Scope the output stream so it closes and finalizes output to the string. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     auto printer = file->CreatePrinter(&output); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    std::map<grpc::string, grpc::string> vars; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    std::map<std::string, std::string> vars; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     vars["filename"] = file->filename(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     vars["filename_base"] = file->filename_without_ext(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2387,10 +2387,9 @@ grpc::string GetMockPrologue(grpc_generator::File* file, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     printer->Print(vars, "#include \"$filename_base$$message_header_ext$\"\n"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     printer->Print(vars, "#include \"$filename_base$$service_header_ext$\"\n"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     if (params.include_import_headers) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      const std::vector<grpc::string> import_names = file->GetImportNames(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      const std::vector<std::string> import_names = file->GetImportNames(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       for (const auto& import_name : import_names) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        const grpc::string include_name = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            ImportInludeFromProtoName(import_name); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        const std::string include_name = ImportInludeFromProtoName(import_name); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         printer->Print(vars, include_name.c_str()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       printer->PrintRaw("\n"); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2402,23 +2401,23 @@ grpc::string GetMockPrologue(grpc_generator::File* file, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 // TODO(mmukhi): Add client-stream and completion-queue headers. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-grpc::string GetMockIncludes(grpc_generator::File* file, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                             const Parameters& params) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  grpc::string output; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+std::string GetMockIncludes(grpc_generator::File* file, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            const Parameters& params) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  std::string output; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // Scope the output stream so it closes and finalizes output to the string. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     auto printer = file->CreatePrinter(&output); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    std::map<grpc::string, grpc::string> vars; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    std::map<std::string, std::string> vars; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     static const char* headers_strs[] = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         "grpcpp/impl/codegen/async_stream.h", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         "grpcpp/impl/codegen/sync_stream.h", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    std::vector<grpc::string> headers(headers_strs, array_end(headers_strs)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    std::vector<std::string> headers(headers_strs, array_end(headers_strs)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     PrintIncludes(printer.get(), headers, params.use_system_headers, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                   params.grpc_search_path); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    std::vector<grpc::string> gmock_header; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    std::vector<std::string> gmock_header; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     if (params.gmock_search_path.empty()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       gmock_header.push_back("gmock/gmock.h"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       PrintIncludes(printer.get(), gmock_header, params.use_system_headers, 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2431,7 +2430,7 @@ grpc::string GetMockIncludes(grpc_generator::File* file, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     if (!file->package().empty()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      std::vector<grpc::string> parts = file->package_parts(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      std::vector<std::string> parts = file->package_parts(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       for (auto part = parts.begin(); part != parts.end(); part++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         vars["part"] = *part; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2446,14 +2445,14 @@ grpc::string GetMockIncludes(grpc_generator::File* file, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 void PrintMockClientMethods(grpc_generator::Printer* printer, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             const grpc_generator::Method* method, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            std::map<grpc::string, grpc::string>* vars) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            std::map<std::string, std::string>* vars) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   (*vars)["Method"] = method->name(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   (*vars)["Request"] = method->input_type_name(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   (*vars)["Response"] = method->output_type_name(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   struct { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    grpc::string prefix; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    grpc::string method_params;  // extra arguments to method 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    std::string prefix; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    std::string method_params;  // extra arguments to method 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     int extra_method_param_count; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } async_prefixes[] = {{"Async", ", void* tag", 1}, {"PrepareAsync", "", 0}}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2530,7 +2529,7 @@ void PrintMockClientMethods(grpc_generator::Printer* printer, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 void PrintMockService(grpc_generator::Printer* printer, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                       const grpc_generator::Service* service, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                      std::map<grpc::string, grpc::string>* vars) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      std::map<std::string, std::string>* vars) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   (*vars)["Service"] = service->name(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   printer->Print(*vars, 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2544,13 +2543,13 @@ void PrintMockService(grpc_generator::Printer* printer, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   printer->Print("};\n"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-grpc::string GetMockServices(grpc_generator::File* file, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                             const Parameters& params) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  grpc::string output; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+std::string GetMockServices(grpc_generator::File* file, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            const Parameters& params) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  std::string output; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // Scope the output stream so it closes and finalizes output to the string. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     auto printer = file->CreatePrinter(&output); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    std::map<grpc::string, grpc::string> vars; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    std::map<std::string, std::string> vars; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // Package string is empty or ends with a dot. It is used to fully qualify 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // method names. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     vars["Package"] = file->package(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2575,12 +2574,12 @@ grpc::string GetMockServices(grpc_generator::File* file, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   return output; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-grpc::string GetMockEpilogue(grpc_generator::File* file, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                             const Parameters& /*params*/) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  grpc::string temp; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+std::string GetMockEpilogue(grpc_generator::File* file, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            const Parameters& /*params*/) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  std::string temp; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   if (!file->package().empty()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    std::vector<grpc::string> parts = file->package_parts(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    std::vector<std::string> parts = file->package_parts(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     for (auto part = parts.begin(); part != parts.end(); part++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       temp.append("} // namespace "); 
			 |