| 202 | } |
| 203 | |
| 204 | void ClientCodeRender::GenerateClientHpp(SyntaxTree *stree, FILE *write, const bool is_uthread_mode) { |
| 205 | char file_name[128]{'\0'}; |
| 206 | name_render_.GetClientFileName(stree->GetName(), file_name, sizeof(file_name)); |
| 207 | |
| 208 | string buffer; |
| 209 | name_render_.GetCopyright("phxrpc_pb2client", stree->GetProtoFile(), &buffer, false); |
| 210 | |
| 211 | fprintf(write, "/* %s.h\n", file_name); |
| 212 | fprintf(write, "%s", buffer.c_str()); |
| 213 | fprintf(write, "*/\n"); |
| 214 | fprintf(write, "\n"); |
| 215 | |
| 216 | fprintf(write, "#pragma once\n"); |
| 217 | |
| 218 | fprintf(write, "\n"); |
| 219 | |
| 220 | string declarations; |
| 221 | { |
| 222 | SyntaxFuncVector *flist{stree->GetFuncList()}; |
| 223 | auto fit(flist->cbegin()); |
| 224 | for (; flist->cend() != fit; ++fit) { |
| 225 | string buffer; |
| 226 | GetClienfuncDeclaration(stree, &(*fit), 1, &buffer, is_uthread_mode); |
| 227 | declarations.append(" ").append(buffer).append(";\n"); |
| 228 | |
| 229 | if (0 == strcmp(fit->GetName(), "PHXEcho")) { |
| 230 | SyntaxFunc echo_func = *fit; |
| 231 | echo_func.SetName("PHXBatchEcho"); |
| 232 | string buffer; |
| 233 | GetClienfuncDeclaration(stree, &echo_func, 1, &buffer, is_uthread_mode); |
| 234 | declarations.append(" ").append(buffer).append(";\n"); |
| 235 | } |
| 236 | } |
| 237 | } |
| 238 | |
| 239 | char client_class[128]{'\0'}, message_file[128]{'\0'}; |
| 240 | char client_class_lower[128]{'\0'}; |
| 241 | name_render_.GetClientClassName(stree->GetName(), client_class, sizeof(client_class)); |
| 242 | name_render_.GetClientClassNameLower(stree->GetName(), client_class_lower, sizeof(client_class_lower)); |
| 243 | name_render_.GetMessageFileName(stree->GetProtoFile(), message_file, sizeof(message_file)); |
| 244 | |
| 245 | string client_class_str(client_class); |
| 246 | string client_class_lower_str(client_class_lower); |
| 247 | if (is_uthread_mode) { |
| 248 | client_class_str += "UThread"; |
| 249 | client_class_lower_str += "uthread"; |
| 250 | } |
| 251 | |
| 252 | string content; |
| 253 | if (!is_uthread_mode) { |
| 254 | content = PHXRPC_CLIENT_HPP_TEMPLATE; |
| 255 | } else { |
| 256 | content = PHXRPC_UTHREAD_CLIENT_HPP_TEMPLATE; |
| 257 | } |
| 258 | |
| 259 | StrTrim(&content); |
| 260 | StrReplaceAll(&content, "$MessageFile$", message_file); |
| 261 | StrReplaceAll(&content, "$ClientClass$", client_class_str.c_str()); |
no test coverage detected