MCPcopy Create free account
hub / github.com/EmbeddedRPC/erpc / containsByrefParamToFree

Method containsByrefParamToFree

erpcgen/src/CGenerator.cpp:3272–3308  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

3270}
3271
3272bool CGenerator::containsByrefParamToFree(DataType *dataType, set<DataType *> &dataTypes)
3273{
3274 // For loops from forward declaration detection.
3275 if (dataTypes.insert(dataType).second)
3276 {
3277 DataType *trueDataType = dataType->getTrueContainerDataType();
3278 if (trueDataType->isStruct())
3279 {
3280 StructType *structType = dynamic_cast<StructType *>(trueDataType);
3281 assert(structType != nullptr);
3282
3283 for (StructMember *structMember : structType->getMembers())
3284 {
3285 if ((structMember->isByref() && !findAnnotation(structMember, SHARED_ANNOTATION)) ||
3286 containsByrefParamToFree(structMember->getDataType(), dataTypes))
3287 {
3288 return true;
3289 }
3290 }
3291 }
3292 else if (trueDataType->isUnion())
3293 {
3294 UnionType *unionType = dynamic_cast<UnionType *>(trueDataType);
3295 assert(unionType != nullptr);
3296
3297 for (StructMember *structMember : unionType->getUnionMembers().getMembers())
3298 {
3299 if ((structMember->isByref() && !findAnnotation(structMember, SHARED_ANNOTATION)) ||
3300 containsByrefParamToFree(structMember->getDataType(), dataTypes))
3301 {
3302 return true;
3303 }
3304 }
3305 }
3306 }
3307 return false;
3308}
3309
3310bool CGenerator::isListStruct(const StructType *structType)
3311{

Callers

nothing calls this directly

Calls 5

isStructMethod · 0.80
isByrefMethod · 0.80
isUnionMethod · 0.80
getDataTypeMethod · 0.45

Tested by

no test coverage detected