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

Method getStructDeclarationTemplateData

erpcgen/src/CGenerator.cpp:1014–1067  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1012}
1013
1014data_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
1069data_map CGenerator::getStructDefinitionTemplateData(Group *group, StructType *structType, data_map structInfo)
1070{

Callers

nothing calls this directly

Calls 10

getTrueDataTypeMethod · 0.80
isByrefMethod · 0.80
isStructMethod · 0.80
isUnionMethod · 0.80
isEnumMethod · 0.80
isFunctionMethod · 0.80
push_backMethod · 0.80
getNameMethod · 0.45
getDataTypeMethod · 0.45
isScalarMethod · 0.45

Tested by

no test coverage detected