| 428 | } |
| 429 | |
| 430 | data_list Generator::makeGroupInterfacesTemplateData(Group *group) |
| 431 | { |
| 432 | Log::info("interfaces:\n"); |
| 433 | data_list interfaces; |
| 434 | int n = 0; |
| 435 | |
| 436 | for (Interface *iface : group->getInterfaces()) |
| 437 | { |
| 438 | data_map ifaceInfo; |
| 439 | ifaceInfo["name"] = make_data(getOutputName(iface)); |
| 440 | ifaceInfo["id"] = data_ptr(iface->getUniqueId()); |
| 441 | |
| 442 | setTemplateComments(iface, ifaceInfo); |
| 443 | |
| 444 | // TODO: for C only? |
| 445 | ifaceInfo["serviceClassName"] = getOutputName(iface) + "_service"; |
| 446 | ifaceInfo["clientClassName"] = getOutputName(iface) + "_client"; |
| 447 | ifaceInfo["serverClassName"] = getOutputName(iface) + "_server"; |
| 448 | ifaceInfo["interfaceClassName"] = getOutputName(iface) + "_interface"; |
| 449 | |
| 450 | Log::info("%d: (%d) %s\n", n++, iface->getUniqueId(), iface->getName().c_str()); |
| 451 | |
| 452 | /* Has interface function declared as non-external? */ |
| 453 | data_list functions = getFunctionsTemplateData(group, iface); |
| 454 | ifaceInfo["functions"] = functions; |
| 455 | data_list callbacksInt; |
| 456 | data_list callbacksExt; |
| 457 | data_list callbacksAll; |
| 458 | getCallbacksTemplateData(group, iface, callbacksInt, callbacksExt, callbacksAll); |
| 459 | ifaceInfo["callbacksInt"] = callbacksInt; |
| 460 | ifaceInfo["callbacksAll"] = callbacksAll; |
| 461 | ifaceInfo["isNonExternalInterface"] = false; |
| 462 | for (unsigned int i = 0; i < functions.size(); ++i) |
| 463 | { |
| 464 | assert(dynamic_cast<DataMap *>(functions[i].get().get())); |
| 465 | string isNonExternalFunction = |
| 466 | dynamic_cast<DataMap *>(functions[i].get().get())->getmap()["isNonExternalFunction"]->getvalue(); |
| 467 | if (isNonExternalFunction.compare("true") == 0) |
| 468 | { |
| 469 | ifaceInfo["isNonExternalInterface"] = true; |
| 470 | break; |
| 471 | } |
| 472 | } |
| 473 | |
| 474 | interfaces.push_back(ifaceInfo); |
| 475 | } |
| 476 | |
| 477 | return interfaces; |
| 478 | } |
| 479 | |
| 480 | string Generator::getGroupCommonFileName(Group *group) |
| 481 | { |