| 3228 | } |
| 3229 | |
| 3230 | bool CGenerator::containsList(DataType *dataType) |
| 3231 | { |
| 3232 | if (dataType->getTrueDataType()->isList()) |
| 3233 | { |
| 3234 | return true; |
| 3235 | } |
| 3236 | DataType *trueDataType = dataType->getTrueContainerDataType(); |
| 3237 | switch (trueDataType->getDataType()) |
| 3238 | { |
| 3239 | case DataType::data_type_t::kStructType: |
| 3240 | { |
| 3241 | StructType *s = dynamic_cast<StructType *>(trueDataType); |
| 3242 | assert(s); |
| 3243 | return s->containListMember(); |
| 3244 | } |
| 3245 | case DataType::data_type_t::kUnionType: |
| 3246 | { |
| 3247 | UnionType *u = dynamic_cast<UnionType *>(trueDataType); |
| 3248 | assert(u); |
| 3249 | for (UnionCase *unionCase : u->getUniqueCases()) |
| 3250 | { |
| 3251 | if (!unionCase->caseMemberIsVoid()) |
| 3252 | { |
| 3253 | for (string unionCaseName : unionCase->getMemberDeclarationNames()) |
| 3254 | { |
| 3255 | StructMember *unionCaseMember = unionCase->getUnionMemberDeclaration(unionCaseName); |
| 3256 | if (containsList(unionCaseMember->getDataType())) |
| 3257 | { |
| 3258 | return true; |
| 3259 | } |
| 3260 | } |
| 3261 | } |
| 3262 | } |
| 3263 | return false; |
| 3264 | } |
| 3265 | default: |
| 3266 | { |
| 3267 | return false; |
| 3268 | } |
| 3269 | } |
| 3270 | } |
| 3271 | |
| 3272 | bool CGenerator::containsByrefParamToFree(DataType *dataType, set<DataType *> &dataTypes) |
| 3273 | { |
nothing calls this directly
no test coverage detected