| 1012 | } |
| 1013 | |
| 1014 | data_map CGenerator::getStructDeclarationTemplateData(StructType *structType) |
| 1015 | { |
| 1016 | data_map info; |
| 1017 | info["name"] = (structType->getName() != "" ? getOutputName(structType) : getAliasName(structType)); |
| 1018 | info["type"] = "struct"; |
| 1019 | |
| 1020 | setTemplateComments(structType, info); |
| 1021 | |
| 1022 | // external annotation |
| 1023 | if (findAnnotation(structType, EXTERNAL_ANNOTATION)) |
| 1024 | { |
| 1025 | info["isExternal"] = true; |
| 1026 | } |
| 1027 | else |
| 1028 | { |
| 1029 | info["isExternal"] = false; |
| 1030 | m_templateData["nonExternalStructUnion"] = true; |
| 1031 | } |
| 1032 | |
| 1033 | data_list members; |
| 1034 | for (auto member : structType->getMembers()) |
| 1035 | { |
| 1036 | data_map member_info; |
| 1037 | |
| 1038 | string memberName = getOutputName(member); |
| 1039 | member_info["name"] = memberName; |
| 1040 | |
| 1041 | DataType *trueDataType = member->getDataType()->getTrueDataType(); |
| 1042 | // Check if member is byRef type. Add "*" for type and allocate space for data on server side. |
| 1043 | if (member->isByref() && (trueDataType->isStruct() || trueDataType->isUnion() || trueDataType->isScalar() || |
| 1044 | trueDataType->isEnum() || trueDataType->isFunction())) |
| 1045 | { |
| 1046 | memberName = "*" + memberName; |
| 1047 | } |
| 1048 | member_info["memberDeclaration"] = getTypenameName(member->getDataType(), memberName) + ";"; |
| 1049 | |
| 1050 | member_info["elementsCount"] = ""; |
| 1051 | if (isBinaryStruct(structType)) |
| 1052 | { |
| 1053 | member_info["elementsCount"] = "uint32_t dataLength;"; |
| 1054 | } |
| 1055 | else if (isListStruct(structType)) |
| 1056 | { |
| 1057 | member_info["elementsCount"] = "uint32_t elementsCount;"; |
| 1058 | } |
| 1059 | |
| 1060 | setTemplateComments(member, member_info); |
| 1061 | |
| 1062 | members.push_back(member_info); |
| 1063 | } |
| 1064 | info["members"] = members; |
| 1065 | |
| 1066 | return info; |
| 1067 | } |
| 1068 | |
| 1069 | data_map CGenerator::getStructDefinitionTemplateData(Group *group, StructType *structType, data_map structInfo) |
| 1070 | { |
nothing calls this directly
no test coverage detected