MCPcopy Create free account
hub / github.com/Tencent/phxrpc / GenerateToolImplCpp

Method GenerateToolImplCpp

codegen/tool_code_render.cpp:222–293  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

220}
221
222void ToolCodeRender::GenerateToolImplCpp(SyntaxTree *stree, FILE *write) {
223 char file_name[128]{'\0'};
224 name_render_.GetToolImplFileName(stree->GetName(), file_name, sizeof(file_name));
225
226 string buffer;
227 name_render_.GetCopyright("phxrpc_pb2tool", stree->GetProtoFile(), &buffer, false);
228
229 fprintf(write, "/* %s.cpp\n", file_name);
230 fprintf(write, "%s", buffer.c_str());
231 fprintf(write, "*/\n");
232 fprintf(write, "\n");
233
234 fprintf(write, "#include \"%s.h\"\n", file_name);
235 fprintf(write, "\n");
236
237 name_render_.GetClientFileName(stree->GetName(), file_name, sizeof(file_name));
238 fprintf(write, "#include \"%s.h\"\n", file_name);
239 fprintf(write, "\n");
240 fprintf(write, "#include \"phxrpc/file.h\"\n");
241
242 fprintf(write, "\n");
243 fprintf(write, "\n");
244
245 fprintf(write, "using namespace phxrpc;\n");
246 fprintf(write, "using namespace std;\n");
247
248 fprintf(write, "\n");
249 fprintf(write, "\n");
250
251 char class_name[128]{'\0'};
252 name_render_.GetToolImplClassName(stree->GetName(), class_name, sizeof(class_name));
253
254 fprintf(write, "%s::%s() {\n", class_name, class_name);
255 fprintf(write, "}\n");
256 fprintf(write, "\n");
257
258 fprintf(write, "%s::~%s() {\n", class_name, class_name);
259 fprintf(write, "}\n");
260 fprintf(write, "\n");
261
262 char client_class[128]{'\0'}, req_class[128]{'\0'}, resp_class[128]{'\0'};
263 name_render_.GetClientClassName(stree->GetName(), client_class, sizeof(client_class));
264
265 SyntaxFuncVector *flist{stree->GetFuncList()};
266 auto fit(flist->cbegin());
267 for (; flist->cend() != fit; ++fit) {
268 name_render_.GetMessageClassName(fit->GetReq()->GetType(), req_class, sizeof(req_class));
269 name_render_.GetMessageClassName(fit->GetResp()->GetType(), resp_class, sizeof(resp_class));
270
271 fprintf(write, "int %s::%s(phxrpc::OptMap &opt_map) {\n", class_name, fit->GetName());
272 fprintf(write, " %s req;\n", req_class);
273 fprintf(write, " %s resp;\n", resp_class);
274 fprintf(write, "\n");
275
276 if (0 == strcmp("PHXEcho", fit->GetName())) {
277 fprintf(write, " if (nullptr == opt_map.Get('s')) return -1;\n\n");
278 fprintf(write, " req.set_value(opt_map.Get('s'));\n");
279 } else {

Callers 1

Proto2ToolFunction · 0.80

Calls 12

GetToolImplFileNameMethod · 0.80
GetNameMethod · 0.80
GetCopyrightMethod · 0.80
GetProtoFileMethod · 0.80
GetClientFileNameMethod · 0.80
GetToolImplClassNameMethod · 0.80
GetClientClassNameMethod · 0.80
GetFuncListMethod · 0.80
GetMessageClassNameMethod · 0.80
GetReqMethod · 0.80
GetRespMethod · 0.80
GetTypeMethod · 0.45

Tested by

no test coverage detected