| 1265 | } |
| 1266 | |
| 1267 | void CGenerator::setUnionMembersTemplateData(UnionType *unionType, data_map &unionInfo) |
| 1268 | { |
| 1269 | data_list unionCasesList; |
| 1270 | for (auto unionCase : unionType->getUniqueCases()) |
| 1271 | { |
| 1272 | if (!unionCase->caseMemberIsVoid()) |
| 1273 | { |
| 1274 | data_list unionCaseList; |
| 1275 | for (auto memberName : unionCase->getMemberDeclarationNames()) |
| 1276 | { |
| 1277 | data_map unionMemberMap; |
| 1278 | StructMember *unionMember = unionCase->getUnionMemberDeclaration(memberName); |
| 1279 | string unionMemberName = getOutputName(unionMember); |
| 1280 | DataType *unionMemberType = unionMember->getDataType()->getTrueDataType(); |
| 1281 | |
| 1282 | // Check if member is byRef type. Add "*" for type and allocate space for data on server side. |
| 1283 | if (unionMember->isByref() && (unionMemberType->isStruct() || unionMemberType->isUnion() || |
| 1284 | unionMemberType->isScalar() || unionMemberType->isEnum())) |
| 1285 | { |
| 1286 | unionMemberName = "*" + unionMemberName; |
| 1287 | } |
| 1288 | |
| 1289 | unionMemberMap["typenameName"] = getTypenameName(unionMember->getDataType(), unionMemberName); |
| 1290 | unionCaseList.push_back(unionMemberMap); |
| 1291 | } |
| 1292 | unionCasesList.push_back(unionCaseList); |
| 1293 | } |
| 1294 | } |
| 1295 | unionInfo["unionCases"] = unionCasesList; |
| 1296 | } |
| 1297 | |
| 1298 | string CGenerator::getUnionMembersData(UnionType *unionType, string indent) |
| 1299 | { |
nothing calls this directly
no test coverage detected