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

Method findParamReferencedFromUnion

erpcgen/src/Generator.cpp:258–286  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

256}
257
258StructMember *Generator::findParamReferencedFromUnion(const StructType::member_vector_t &members,
259 const string &referenceName)
260{
261 for (StructMember *structMember : members)
262 {
263 DataType *trueDataType = structMember->getDataType()->getTrueDataType();
264 if (trueDataType->isUnion())
265 {
266 UnionType *unionType = dynamic_cast<UnionType *>(trueDataType);
267 assert(unionType);
268 if (unionType->isNonEncapsulatedUnion())
269 {
270 string lengthName = getAnnStringValue(structMember, DISCRIMINATOR_ANNOTATION);
271 if (strcmp(lengthName.c_str(), referenceName.c_str()) == 0)
272 {
273 return structMember;
274 }
275 }
276 else
277 {
278 if (strcmp(unionType->getDiscriminatorName().c_str(), referenceName.c_str()) == 0)
279 {
280 return structMember;
281 }
282 }
283 }
284 }
285 return nullptr;
286}
287
288StructMember *Generator::findParamReferencedFrom(const StructType::member_vector_t &members,
289 const string &referenceName)

Callers

nothing calls this directly

Calls 5

getTrueDataTypeMethod · 0.80
isUnionMethod · 0.80
getDiscriminatorNameMethod · 0.80
getDataTypeMethod · 0.45

Tested by

no test coverage detected