| 2401 | } |
| 2402 | |
| 2403 | data_map CGenerator::getEncodeDecodeCall(const string &name, Group *group, DataType *t, StructType *structType, |
| 2404 | bool inDataContainer, StructMember *structMember, bool &needTempVariableI32, |
| 2405 | bool isFunctionParam) |
| 2406 | { |
| 2407 | // prepare data for template |
| 2408 | data_map templateData; |
| 2409 | string_vector params = string_vector(1, ""); |
| 2410 | templateData["freeingCall"] = make_template("", ¶ms); |
| 2411 | templateData["inDataContainer"] = inDataContainer; |
| 2412 | templateData["isElementArrayType"] = false; |
| 2413 | data_map defMemberAllocation; |
| 2414 | templateData["memberAllocation"] = defMemberAllocation; |
| 2415 | // name used for serializing/deserializing current data type. |
| 2416 | string localName; |
| 2417 | |
| 2418 | int pos = name.rfind("*"); |
| 2419 | if ((pos == 0 || pos == 1) && (t->getTrueDataType()->isStruct() || t->getTrueDataType()->isUnion()) && |
| 2420 | inDataContainer == false) |
| 2421 | { |
| 2422 | localName = name.substr(1, name.length()); |
| 2423 | } |
| 2424 | else |
| 2425 | { |
| 2426 | localName = name; |
| 2427 | } |
| 2428 | |
| 2429 | templateData["freeName"] = localName; |
| 2430 | |
| 2431 | /* Check if member should be serialized as shared. */ |
| 2432 | if ((structMember && findAnnotation(structMember, SHARED_ANNOTATION)) || |
| 2433 | (structType && findAnnotation(structType, SHARED_ANNOTATION))) |
| 2434 | { |
| 2435 | templateData["funcParam"] = (structType) ? true : false; |
| 2436 | templateData["InoutOutDirection"] = |
| 2437 | (structMember && (structMember->getDirection() == param_direction_t::kOutDirection || |
| 2438 | structMember->getDirection() == param_direction_t::kInoutDirection)) ? |
| 2439 | true : |
| 2440 | false; |
| 2441 | templateData["encode"] = m_templateData["encodeSharedType"]; |
| 2442 | templateData["decode"] = m_templateData["decodeSharedType"]; |
| 2443 | templateData["name"] = name; |
| 2444 | templateData["sharedTypeName"] = t->getName(); |
| 2445 | |
| 2446 | /* If shared member contains non-shared member, it has to be serialized. */ |
| 2447 | templateData["sharedType"] = ""; |
| 2448 | if (t->isStruct() || t->isUnion()) |
| 2449 | { |
| 2450 | StructType *s = dynamic_cast<StructType *>(t); |
| 2451 | if (s) |
| 2452 | { |
| 2453 | for (StructMember *m : s->getMembers()) |
| 2454 | { |
| 2455 | if (findAnnotation(m, NO_SHARED_ANNOTATION)) |
| 2456 | { |
| 2457 | templateData["sharedType"] = "struct"; |
| 2458 | templateData["dataLiteral"] = (inDataContainer) ? "data->" : ""; |
| 2459 | break; |
| 2460 | } |
nothing calls this directly
no test coverage detected