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

Method GenerateToolImplHpp

codegen/tool_code_render.cpp:169–220  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

167}
168
169void ToolCodeRender::GenerateToolImplHpp(SyntaxTree *stree, FILE *write) {
170 char file_name[128]{'\0'};
171 name_render_.GetToolImplFileName(stree->GetName(), file_name, sizeof(file_name));
172
173 string buffer;
174 name_render_.GetCopyright("phxrpc_pb2tool", stree->GetProtoFile(), &buffer, false);
175
176 fprintf(write, "/* %s.h\n", file_name);
177 fprintf(write, "%s", buffer.c_str());
178 fprintf(write, "*/\n");
179 fprintf(write, "\n");
180 fprintf(write, "#pragma once\n");
181
182 fprintf(write, "\n");
183
184 char tool_file[128]{'\0'};
185 name_render_.GetToolFileName(stree->GetName(), tool_file, sizeof(tool_file));
186
187 fprintf(write, "#include \"%s.h\"\n", tool_file);
188 fprintf(write, "\n");
189 fprintf(write, "\n");
190
191 fprintf(write, "namespace phxrpc {\n");
192 fprintf(write, "\n");
193 fprintf(write, "\n");
194 fprintf(write, "class OptMap;\n");
195 fprintf(write, "\n");
196 fprintf(write, "\n");
197 fprintf(write, "}\n");
198
199 fprintf(write, "\n");
200 fprintf(write, "\n");
201
202 char class_name[128]{'\0'};
203 name_render_.GetToolClassName(stree->GetName(), class_name, sizeof(class_name));
204
205 fprintf(write, "class %sImpl : public %s {\n", class_name, class_name);
206 fprintf(write, " public:\n");
207 fprintf(write, " %sImpl();\n", class_name);
208 fprintf(write, " virtual ~%sImpl() override;\n", class_name);
209 fprintf(write, "\n");
210
211 SyntaxFuncVector *flist{stree->GetFuncList()};
212 auto fit(flist->cbegin());
213 for (; flist->cend() != fit; ++fit) {
214 fprintf(write, " virtual int %s(phxrpc::OptMap &opt_map) override;\n", fit->GetName());
215 }
216
217 fprintf(write, "};\n");
218
219 fprintf(write, "\n");
220}
221
222void ToolCodeRender::GenerateToolImplCpp(SyntaxTree *stree, FILE *write) {
223 char file_name[128]{'\0'};

Callers 1

Proto2ToolFunction · 0.80

Calls 7

GetToolImplFileNameMethod · 0.80
GetNameMethod · 0.80
GetCopyrightMethod · 0.80
GetProtoFileMethod · 0.80
GetToolFileNameMethod · 0.80
GetToolClassNameMethod · 0.80
GetFuncListMethod · 0.80

Tested by

no test coverage detected