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

Method GenerateToolHpp

codegen/tool_code_render.cpp:43–118  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

41}
42
43void ToolCodeRender::GenerateToolHpp(SyntaxTree *stree, FILE *write) {
44 char file_name[128]{'\0'};
45 name_render_.GetToolFileName(stree->GetName(), file_name, sizeof(file_name));
46
47 string buffer;
48 name_render_.GetCopyright("phxrpc_pb2tool", stree->GetProtoFile(), &buffer);
49
50 fprintf(write, "/* %s.h\n", file_name);
51 fprintf(write, "%s", buffer.c_str());
52 fprintf(write, "*/\n");
53 fprintf(write, "\n");
54
55 fprintf(write, "#pragma once\n");
56 fprintf(write, "\n");
57 fprintf(write, "\n");
58
59 fprintf(write, "namespace phxrpc {\n");
60 fprintf(write, "\n");
61 fprintf(write, "\n");
62 fprintf(write, "class OptMap;\n");
63 fprintf(write, "\n");
64 fprintf(write, "\n");
65 fprintf(write, "}\n");
66
67 fprintf(write, "\n");
68 fprintf(write, "\n");
69
70 char class_name[128]{'\0'};
71 name_render_.GetToolClassName(stree->GetName(), class_name, sizeof(class_name));
72
73 fprintf(write, "class %s {\n", class_name);
74 fprintf(write, " public:\n");
75 fprintf(write, " %s();\n", class_name);
76 fprintf(write, " virtual ~%s();\n", class_name);
77 fprintf(write, "\n");
78
79 SyntaxFuncVector *flist{stree->GetFuncList()};
80 auto fit(flist->cbegin());
81 for (; flist->cend() != fit; ++fit) {
82 fprintf(write, " virtual int %s(phxrpc::OptMap &bigmap);\n", fit->GetName());
83 }
84 fprintf(write, "\n");
85
86 fprintf(write, " typedef int (%s::*ToolFunc_t)(phxrpc::OptMap &);\n", class_name);
87 fprintf(write, "\n");
88 fprintf(write, " typedef struct tagName2Func {\n");
89 fprintf(write, " const char *name;\n");
90 fprintf(write, " %s::ToolFunc_t func;\n", class_name);
91 fprintf(write, " const char *opt_string;\n");
92 fprintf(write, " const char *usage;\n");
93 fprintf(write, " } Name2Func_t;\n");
94 fprintf(write, "\n");
95 fprintf(write, " static Name2Func_t *GetName2Func() {\n");
96 fprintf(write, " static Name2Func_t name2func[]{\n");
97 {
98 SyntaxFuncVector *flist{stree->GetFuncList()};
99 auto fit(flist->cbegin());
100 for (; flist->cend() != fit; ++fit) {

Callers 1

Proto2ToolFunction · 0.80

Calls 8

GetToolFileNameMethod · 0.80
GetNameMethod · 0.80
GetCopyrightMethod · 0.80
GetProtoFileMethod · 0.80
GetToolClassNameMethod · 0.80
GetFuncListMethod · 0.80
GetOptStringMethod · 0.80
GetUsageMethod · 0.80

Tested by

no test coverage detected