Lines Matching refs:prefix

209 void CppCodeEmitter::EmitInterfaceBody(StringBuilder& sb, const String& prefix)
217 void CppCodeEmitter::EmitInterfaceMethods(StringBuilder& sb, const String& prefix)
222 EmitInterfaceMethod(mm, sb, prefix);
230 void CppCodeEmitter::EmitInterfaceMethod(MetaMethod* mm, StringBuilder& sb, const String& prefix)
234 sb.Append(prefix).AppendFormat("virtual ErrCode %s() = 0;\n", mm->name_);
236 sb.Append(prefix).AppendFormat("virtual ErrCode %s(\n", mm->name_);
239 EmitInterfaceMethodParameter(mp, sb, prefix + TAB);
245 EmitInterfaceMethodReturn(returnType, sb, prefix + TAB);
251 void CppCodeEmitter::EmitInterfaceMethodParameter(MetaParameter* mp, StringBuilder& sb, const String& prefix)
253 sb.Append(prefix);
260 void CppCodeEmitter::EmitInterfaceMethodReturn(MetaType* mt, StringBuilder& sb, const String& prefix)
262 sb.Append(prefix).AppendFormat("%s result", EmitType(mt, ATTR_OUT, false).string());
265 void CppCodeEmitter::EmitInterfaceMemberVariables(StringBuilder& sb, const String& prefix)
269 sb.Append(prefix).AppendFormat(
273 sb.Append(prefix).Append("const int VECTOR_MAX_SIZE = 102400;\n");
274 sb.Append(prefix).Append("const int LIST_MAX_SIZE = 102400;\n");
275 sb.Append(prefix).Append("const int MAP_MAX_SIZE = 102400;\n");
325 void CppCodeEmitter::EmitInterfaceProxyRegisterDeathRecipient(StringBuilder& sb, const String& prefix)
327 sb.Append(prefix).Append("if (remote != nullptr) {\n");
328 sb.Append(prefix + TAB).Append("if (!remote->IsProxyObject()) {\n");
330 sb.Append(prefix + TAB + TAB).Append("HiLog::Error(LABEL, \"remote is not proxy object!\");\n");
332 sb.Append(prefix + TAB + TAB).Append("return;\n");
333 sb.Append(prefix + TAB).Append("}\n");
334 sb.Append(prefix + TAB).AppendFormat("deathRecipient_ = new (std::nothrow) %s(*this);\n",
336 sb.Append(prefix + TAB).Append("if (deathRecipient_ == nullptr) {\n");
338 sb.Append(prefix + TAB + TAB).Append("HiLog::Error(LABEL, \"deathRecipient_ is nullptr!\");\n");
340 sb.Append(prefix + TAB + TAB).Append("return;\n");
341 sb.Append(prefix + TAB).Append("}\n");
342 sb.Append(prefix + TAB).Append("if (!remote->AddDeathRecipient(deathRecipient_)) {\n");
344 sb.Append(prefix + TAB + TAB).Append("HiLog::Error(LABEL, \"AddDeathRecipient failed!\");\n");
346 sb.Append(prefix + TAB + TAB).Append("return;\n");
347 sb.Append(prefix + TAB).Append("}\n");
348 sb.Append(prefix + TAB).Append("remote_ = remote;\n");
349 sb.Append(prefix).Append("}\n");
352 void CppCodeEmitter::EmitInterfaceProxyAddCacheAbleAPI(StringBuilder& sb, const String& prefix)
364 sb.Append(prefix + TAB).AppendFormat(
368 sb.Append(prefix + TAB).AppendFormat(
374 EmitInterfaceProxyRegisterDeathRecipient(sb, prefix + TAB);
377 void CppCodeEmitter::EmitInterfaceProxyUnRegisterDeathRecipient(StringBuilder& sb, const String& prefix)
379 sb.Append(prefix).Append("if (remote_ == nullptr) {\n");
380 sb.Append(prefix).Append(TAB).Append("return;\n");
381 sb.Append(prefix).Append("}\n");
382 sb.Append(prefix).Append("if (deathRecipient_ == nullptr) {\n");
383 sb.Append(prefix).Append(TAB).Append("return;\n");
384 sb.Append(prefix).Append("}\n");
385 sb.Append(prefix).Append("remote_->RemoveDeathRecipient(deathRecipient_);\n");
386 sb.Append(prefix).Append("remote_ = nullptr;\n");
392 sb.Append(prefix).AppendFormat(
400 void CppCodeEmitter::EmitInterfaceProxyConstructor(StringBuilder& sb, const String& prefix)
402 sb.Append(prefix).AppendFormat("explicit %s(\n", proxyName_.string());
403 sb.Append(prefix + TAB).Append("const sptr<IRemoteObject>& remote)\n");
404 sb.Append(prefix + TAB).AppendFormat(": IRemoteProxy<%s>(remote)\n", interfaceName_.string());
405 sb.Append(prefix).Append("{");
406 EmitInterfaceProxyAddCacheAbleAPI(sb, prefix);
407 sb.Append(prefix).Append("}\n\n");
408 sb.Append(prefix).AppendFormat("virtual ~%s()\n", proxyName_.string());
409 sb.Append(prefix).Append("{\n");
411 EmitInterfaceProxyUnRegisterDeathRecipient(sb, prefix + TAB);
413 sb.Append(prefix).Append("}\n");
416 void CppCodeEmitter::EmitInterfaceProxyMethodDecls(StringBuilder& sb, const String& prefix)
421 EmitInterfaceProxyMethodDecl(mm, sb, prefix);
429 void CppCodeEmitter::EmitInterfaceProxyMethodDecl(MetaMethod* mm, StringBuilder& sb, const String& prefix)
433 sb.Append(prefix).AppendFormat("ErrCode %s() override;\n", mm->name_);
435 sb.Append(prefix).AppendFormat("ErrCode %s(\n", mm->name_);
438 EmitInterfaceMethodParameter(mp, sb, prefix + TAB);
444 EmitInterfaceMethodReturn(returnType, sb, prefix + TAB);
450 void CppCodeEmitter::EmitInterfaceProxyDeathRecipient(StringBuilder& sb, const String& prefix)
452 sb.Append(prefix).AppendFormat("class %s : public IRemoteObject::DeathRecipient {\n", deathRecipientName_.string());
453 sb.Append(prefix).Append("public:\n");
454 sb.Append(prefix + TAB).AppendFormat("explicit %s(%s &client) : client_(client) {}\n", deathRecipientName_.string(),
456 sb.Append(prefix + TAB).AppendFormat("~%s() override = default;\n", deathRecipientName_.string());
457 sb.Append(prefix + TAB).Append("void OnRemoteDied(const wptr<IRemoteObject> &remote) override\n");
458 sb.Append(prefix + TAB).Append("{\n");
459 sb.Append(prefix + TAB + TAB).Append("client_.OnRemoteDied(remote);\n");
460 sb.Append(prefix + TAB).Append("}\n");
461 sb.Append(prefix).Append("private:\n");
462 sb.Append(prefix + TAB).AppendFormat("%s &client_;\n", proxyName_.string());
463 sb.Append(prefix).Append("};\n\n");
465 sb.Append(prefix).Append("void OnRemoteDied(const wptr<IRemoteObject> &remoteObject)\n");
466 sb.Append(prefix).Append("{\n");
467 sb.Append(prefix + TAB).Append("(void)remoteObject;\n");
468 sb.Append(prefix + TAB).Append("ApiCacheManager::GetInstance().ClearCache(GetDescriptor());\n");
469 sb.Append(prefix).Append("}\n");
470 sb.Append(prefix).Append("sptr<IRemoteObject> remote_ = nullptr;\n");
471 sb.Append(prefix).Append("sptr<IRemoteObject::DeathRecipient> deathRecipient_ = nullptr;\n");
474 void CppCodeEmitter::EmitInterfaceProxyConstants(StringBuilder& sb, const String& prefix)
477 EmitInterfaceProxyDeathRecipient(sb, prefix);
479 EmitInterfaceMethodCommands(sb, prefix);
481 sb.Append(prefix).AppendFormat("static inline BrokerDelegator<%s> delegator_;\n", proxyName_.string());
514 void CppCodeEmitter::EmitInterfaceProxyMethodImpls(StringBuilder& sb, const String& prefix)
519 EmitInterfaceProxyMethodImpl(mm, sb, prefix);
527 void CppCodeEmitter::EmitInterfaceProxyMethodImpl(MetaMethod* mm, StringBuilder& sb, const String& prefix)
531 sb.Append(prefix).AppendFormat("ErrCode %s::%s()\n", proxyName_.string(), mm->name_);
533 sb.Append(prefix).AppendFormat("ErrCode %s::%s(\n", proxyName_.string(), mm->name_);
536 EmitInterfaceMethodParameter(mp, sb, prefix + TAB);
542 EmitInterfaceMethodReturn(returnType, sb, prefix + TAB);
546 EmitInterfaceProxyMethodBody(mm, sb, prefix);
549 void CppCodeEmitter::EmitInterfaceProxyMethodPreSendRequest(MetaMethod* mm, StringBuilder& sb, const String& prefix)
553 sb.Append(prefix + TAB).AppendFormat(
557 sb.Append(prefix + TAB).Append("if (hitCache == true) {\n");
558 EmitInterfaceProxyMethodErrCode(sb, prefix + TAB);
559 EmitInterfaceProxyMethodReply(mm, sb, prefix + TAB);
560 sb.Append(prefix + TAB + TAB).Append("return ERR_OK;\n");
561 sb.Append(prefix + TAB).Append("}\n\n");
565 void CppCodeEmitter::EmitInterfaceProxyMethodPostSendRequest(MetaMethod* mm, StringBuilder& sb, const String& prefix)
567 sb.Append(prefix + TAB).AppendFormat(
572 void CppCodeEmitter::EmitInterfaceProxyMethodBody(MetaMethod* mm, StringBuilder& sb, const String& prefix)
574 sb.Append(prefix).Append("{\n");
576 sb.Append(prefix + TAB).AppendFormat("HITRACE_METER_NAME(%s, __PRETTY_FUNCTION__);\n",
579 sb.Append(prefix + TAB).Append("MessageParcel data;\n");
580 sb.Append(prefix + TAB).Append("MessageParcel reply;\n");
581 sb.Append(prefix + TAB).AppendFormat("MessageOption option(%s);\n",
584 sb.Append(prefix + TAB).Append("if (!data.WriteInterfaceToken(GetDescriptor())) {\n");
586 sb.Append(prefix + TAB).Append(TAB).Append("HiLog::Error(LABEL, \"Write interface token failed!\");\n");
588 sb.Append(prefix + TAB).Append(TAB).Append("return ERR_INVALID_VALUE;\n");
589 sb.Append(prefix + TAB).Append("}\n");
595 EmitWriteMethodParameter(mp, "data.", sb, prefix + TAB);
598 EmitInterfaceProxyMethodPreSendRequest(mm, sb, prefix);
599 sb.Append(prefix + TAB).Append("sptr<IRemoteObject> remote = Remote();\n");
600 sb.Append(prefix + TAB).Append("if (remote == nullptr) {\n");
602 sb.Append(prefix + TAB).Append(TAB).Append("HiLog::Error(LABEL, \"Remote is nullptr!\");\n");
604 sb.Append(prefix + TAB).Append(TAB).Append("return ERR_INVALID_DATA;\n");
605 sb.Append(prefix + TAB).Append("}\n\n");
606 sb.Append(prefix + TAB).AppendFormat("int32_t result = remote->SendRequest(COMMAND_%s, data, reply, option);\n",
608 sb.Append(prefix + TAB).Append("if (FAILED(result)) {\n");
610 sb.Append(prefix + TAB).Append(TAB).Append("HiLog::Error(LABEL, \"Send request failed!\");\n");
612 sb.Append(prefix + TAB).Append(" return result;\n");
613 sb.Append(prefix + TAB).Append("}\n");
614 EmitInterfaceProxyMethodRetValue(mm, sb, prefix);
615 sb.Append(prefix).Append("}\n");
618 void CppCodeEmitter::EmitInterfaceProxyMethodErrCode(StringBuilder& sb, const String& prefix)
620 sb.Append(prefix + TAB).Append("ErrCode errCode = reply.ReadInt32();\n");
621 sb.Append(prefix + TAB).Append("if (FAILED(errCode)) {\n");
623 sb.Append(prefix + TAB + TAB).Append("HiLog::Error(LABEL, \"Read Int32 failed!\");\n");
625 sb.Append(prefix + TAB).Append(" return errCode;\n");
626 sb.Append(prefix + TAB).Append("}\n");
629 void CppCodeEmitter::EmitInterfaceProxyMethodReply(MetaMethod* mm, StringBuilder& sb, const String& prefix)
634 EmitReadMethodParameter(mp, "reply.", sb, prefix + TAB);
639 EmitReadVariable("reply.", "result", returnType, sb, prefix + TAB, false);
643 void CppCodeEmitter::EmitInterfaceProxyMethodRetValue(MetaMethod* mm, StringBuilder& sb, const String& prefix)
646 EmitInterfaceProxyMethodErrCode(sb, prefix);
649 EmitInterfaceProxyMethodPostSendRequest(mm, sb, prefix);
651 EmitInterfaceProxyMethodReply(mm, sb, prefix);
653 sb.Append(prefix + TAB).Append("return ERR_OK;\n");
657 const String& prefix)
661 EmitWriteVariable(parcelName, name, mt, sb, prefix);
665 const String& prefix)
669 EmitReadVariable(parcelName, name, mt, sb, prefix, false);
714 void CppCodeEmitter::EmitInterfaceStubMethodDecls(StringBuilder& sb, const String& prefix)
716 sb.Append(prefix).Append("int32_t OnRemoteRequest(\n");
717 sb.Append(prefix + TAB).Append("uint32_t code,\n");
718 sb.Append(prefix + TAB).Append("MessageParcel& data,\n");
719 sb.Append(prefix + TAB).Append("MessageParcel& reply,\n");
720 sb.Append(prefix + TAB).Append("MessageOption& option) override;\n");
723 void CppCodeEmitter::EmitInterfaceStubConstants(StringBuilder& sb, const String& prefix)
725 EmitInterfaceMethodCommands(sb, prefix);
758 void CppCodeEmitter::EmitInterfaceStubMethodImpls(StringBuilder& sb, const String& prefix)
760 sb.Append(prefix).AppendFormat("int32_t %s::OnRemoteRequest(\n", stubName_.string());
761 sb.Append(prefix + TAB).Append("uint32_t code,\n");
762 sb.Append(prefix + TAB).Append("MessageParcel& data,\n");
763 sb.Append(prefix + TAB).Append("MessageParcel& reply,\n");
764 sb.Append(prefix + TAB).Append("MessageOption& option)\n");
765 sb.Append(prefix).Append("{\n");
767 sb.Append(prefix + TAB).AppendFormat("HITRACE_METER_NAME(%s, __PRETTY_FUNCTION__);\n",
770 sb.Append(prefix + TAB).Append("std::u16string localDescriptor = GetDescriptor();\n");
771 sb.Append(prefix + TAB).Append("std::u16string remoteDescriptor = data.ReadInterfaceToken();\n");
772 sb.Append(prefix + TAB).Append("if (localDescriptor != remoteDescriptor) {\n");
773 sb.Append(prefix + TAB).Append(TAB).Append("return ERR_TRANSACTION_FAILED;\n");
774 sb.Append(prefix + TAB).Append("}\n");
775 sb.Append(prefix + TAB).Append("switch (code) {\n");
778 EmitInterfaceStubMethodImpl(mm, sb, prefix + TAB + TAB);
780 sb.Append(prefix + TAB).Append(TAB).Append("default:\n");
781 sb.Append(prefix + TAB).Append(TAB).Append(TAB).Append(
783 sb.Append(prefix + TAB).Append("}\n\n");
784 sb.Append(prefix + TAB).Append("return ERR_TRANSACTION_FAILED;\n");
785 sb.Append(prefix).Append("}\n");
789 StringBuilder& sb, const String& prefix, MetaType* returnType)
793 sb.Append(prefix + TAB).AppendFormat("%s result = nullptr;\n",
796 sb.Append(prefix + TAB).AppendFormat("%s result;\n", EmitType(returnType, ATTR_IN, true).string());
800 sb.Append(prefix + TAB).AppendFormat("ErrCode errCode = %s();\n", mm->name_);
802 sb.Append(prefix + TAB).AppendFormat("ErrCode errCode = %s(", mm->name_);
828 void CppCodeEmitter::EmitInterfaceStubMethodImpl(MetaMethod* mm, StringBuilder& sb, const String& prefix)
830 sb.Append(prefix).AppendFormat("case COMMAND_%s: {\n", ConstantName(mm->name_).string());
836 EmitReadVariable("data.", name, mt, sb, prefix + TAB);
838 EmitLocalVariable(mp, sb, prefix + TAB);
845 EmitInterfaceStubMethodImplReturn(mm, sb, prefix, returnType);
847 sb.Append(prefix + TAB).Append("if (!reply.WriteInt32(errCode)) {\n");
849 sb.Append(prefix + TAB).Append(TAB).Append("HiLog::Error(LABEL, \"Write Int32 failed!\");\n");
851 sb.Append(prefix + TAB).Append(TAB).Append("return ERR_INVALID_VALUE;\n");
852 sb.Append(prefix + TAB).Append("}\n");
861 sb.Append(prefix + TAB).Append("if (SUCCEEDED(errCode)) {\n");
865 EmitWriteMethodParameter(mp, "reply.", sb, prefix + TAB + TAB);
869 EmitWriteVariable("reply.", "result", returnType, sb, prefix + TAB + TAB);
871 sb.Append(prefix + TAB).Append("}\n");
873 sb.Append(prefix + TAB).Append("return ERR_NONE;\n");
874 sb.Append(prefix).Append("}\n");
877 void CppCodeEmitter::EmitInterfaceMethodCommands(StringBuilder& sb, const String& prefix)
881 sb.Append(prefix).AppendFormat("static constexpr int32_t COMMAND_%s = MIN_TRANSACTION_ID + %d;\n",
928 StringBuilder& sb, const String& prefix)
932 sb.Append(prefix).AppendFormat("if (!%sWriteInt32(%s ? 1 : 0)) {\n", parcelName.string(), name.c_str());
934 sb.Append(prefix).Append(TAB).AppendFormat("HiLog::Error(LABEL, \"Write [%s] failed!\");\n",
937 sb.Append(prefix).Append(TAB).Append("return ERR_INVALID_DATA;\n");
938 sb.Append(prefix).Append("}\n");
944 sb.Append(prefix).AppendFormat("if (!%sWriteInt32(%s)) {\n", parcelName.string(), name.c_str());
946 sb.Append(prefix).Append(TAB).AppendFormat("HiLog::Error(LABEL, \"Write [%s] failed!\");\n",
949 sb.Append(prefix).Append(TAB).Append("return ERR_INVALID_DATA;\n");
950 sb.Append(prefix).Append("}\n");
953 sb.Append(prefix).AppendFormat("if (!%sWriteInt64(%s)) {\n", parcelName.string(), name.c_str());
955 sb.Append(prefix).Append(TAB).AppendFormat("HiLog::Error(LABEL, \"Write [%s] failed!\");\n",
958 sb.Append(prefix).Append(TAB).Append("return ERR_INVALID_DATA;\n");
959 sb.Append(prefix).Append("}\n");
962 EmitWriteVariableFloat(parcelName, name, mt, sb, prefix);
968 const String& parcelName, const std::string& name, MetaType* mt, StringBuilder& sb, const String& prefix)
972 sb.Append(prefix).AppendFormat("if (!%sWriteFloat(%s)) {\n", parcelName.string(), name.c_str());
974 sb.Append(prefix).Append(TAB).AppendFormat("HiLog::Error(LABEL, \"Write [%s] failed!\");\n",
977 sb.Append(prefix).Append(TAB).Append("return ERR_INVALID_DATA;\n");
978 sb.Append(prefix).Append("}\n");
981 sb.Append(prefix).AppendFormat("if (!%sWriteDouble(%s)) {\n", parcelName.string(), name.c_str());
983 sb.Append(prefix).Append(TAB).AppendFormat("HiLog::Error(LABEL, \"Write [%s] failed!\");\n",
986 sb.Append(prefix).Append(TAB).Append("return ERR_INVALID_DATA;\n");
987 sb.Append(prefix).Append("}\n");
990 EmitWriteVariableComplex(parcelName, name, mt, sb, prefix);
996 const String& parcelName, const std::string& name, MetaType* mt, StringBuilder& sb, const String& prefix)
1001 sb.Append(prefix).AppendFormat("if (%s.size() > static_cast<size_t>(VECTOR_MAX_SIZE)) {\n", name.c_str());
1004 sb.Append(prefix).Append(TAB).Append(
1007 sb.Append(prefix).Append(TAB).AppendFormat(
1011 sb.Append(prefix).Append(TAB).Append("return ERR_INVALID_DATA;\n");
1012 sb.Append(prefix).Append("}\n");
1013 sb.Append(prefix).AppendFormat("%sWriteInt32(%s.size());\n", parcelName.string(), name.c_str());
1014 sb.Append(prefix).AppendFormat("for (auto it = %s.begin(); it != %s.end(); ++it) {\n",
1018 EmitWriteVariable(parcelName, "(*it)", innerType, sb, prefix + TAB);
1019 sb.Append(prefix).Append("}\n");
1024 sb.Append(prefix).AppendFormat("if (%s.size() > static_cast<size_t>(MAP_MAX_SIZE)) {\n", name.c_str());
1026 sb.Append(prefix).Append(TAB).AppendFormat(
1029 sb.Append(prefix).Append(TAB).Append("return ERR_INVALID_DATA;\n");
1030 sb.Append(prefix).Append("}\n");
1032 sb.Append(prefix).AppendFormat("%sWriteInt32(%s.size());\n", parcelName.string(), name.c_str());
1033 sb.Append(prefix).AppendFormat("for (auto it = %s.begin(); it != %s.end(); ++it) {\n",
1037 EmitWriteVariable(parcelName, "(it->first)", keyType, sb, prefix + TAB);
1038 EmitWriteVariable(parcelName, "(it->second)", valueType, sb, prefix + TAB);
1039 sb.Append(prefix).Append("}\n");
1043 EmitWriteVariableObject(parcelName, name, mt, sb, prefix);
1049 const String& parcelName, const std::string& name, MetaType* mt, StringBuilder& sb, const String& prefix)
1053 sb.Append(prefix).AppendFormat("if (!%sWriteString16(Str8ToStr16(%s))) {\n", parcelName.string(),
1056 sb.Append(prefix).Append(TAB).AppendFormat("HiLog::Error(LABEL, \"Write [%s] failed!\");\n",
1059 sb.Append(prefix).Append(TAB).Append("return ERR_INVALID_DATA;\n");
1060 sb.Append(prefix).Append("}\n");
1063 sb.Append(prefix).AppendFormat("if (!%sWriteParcelable(&%s)) {\n", parcelName.string(), name.c_str());
1065 sb.Append(prefix).Append(TAB).AppendFormat("HiLog::Error(LABEL, \"Write [%s] failed!\");\n",
1068 sb.Append(prefix).Append(TAB).Append("return ERR_INVALID_DATA;\n");
1069 sb.Append(prefix).Append("}\n");
1072 sb.Append(prefix).AppendFormat("if (%s == nullptr) {\n", name.c_str());
1074 sb.Append(prefix).Append(TAB).AppendFormat("HiLog::Error(LABEL, \"%s is nullptr!\");\n", name.c_str());
1076 sb.Append(prefix).Append(TAB).Append("return ERR_INVALID_DATA;\n");
1077 sb.Append(prefix).Append("}\n");
1078 sb.Append(prefix).AppendFormat(
1081 sb.Append(prefix).Append(TAB).AppendFormat("HiLog::Error(LABEL, \"Write [%s] failed!\");\n",
1084 sb.Append(prefix).Append(TAB).Append("return ERR_INVALID_DATA;\n");
1085 sb.Append(prefix).Append("}\n");
1093 StringBuilder& sb, const String& prefix, bool emitType)
1098 sb.Append(prefix).AppendFormat("%s %s = %sReadInt32() == 1 ? true : false;\n",
1101 sb.Append(prefix).AppendFormat("%s = %sReadInt32() == 1 ? true : false;\n",
1109 sb.Append(prefix).AppendFormat("%s %s = (%s)%sReadInt32();\n", EmitType(mt, ATTR_IN, true).string(),
1112 sb.Append(prefix).AppendFormat("%s = (%s)%sReadInt32();\n", name.c_str(),
1118 sb.Append(prefix).AppendFormat("%s %s = %sReadInt32();\n",
1121 sb.Append(prefix).AppendFormat("%s = %sReadInt32();\n", name.c_str(), parcelName.string());
1126 sb.Append(prefix).AppendFormat("%s %s = %sReadInt64();\n",
1129 sb.Append(prefix).AppendFormat("%s = %sReadInt64();\n", name.c_str(), parcelName.string());
1133 EmitReadVariableFloat(parcelName, name, mt, sb, prefix, emitType);
1139 StringBuilder& sb, const String& prefix, bool emitType)
1144 sb.Append(prefix).AppendFormat("%s %s = %sReadFloat();\n",
1147 sb.Append(prefix).AppendFormat("%s = %sReadFloat();\n", name.c_str(), parcelName.string());
1152 sb.Append(prefix).AppendFormat("%s %s = %sReadDouble();\n",
1155 sb.Append(prefix).AppendFormat("%s = %sReadDouble();\n", name.c_str(), parcelName.string());
1159 EmitReadVariableComplex(parcelName, name, mt, sb, prefix, emitType);
1165 StringBuilder& sb, const String& prefix, bool emitType)
1170 sb.Append(prefix).AppendFormat("%s %s = Str16ToStr8(%sReadString16());\n",
1173 sb.Append(prefix).AppendFormat("%s = Str16ToStr8(%sReadString16());\n",
1179 sb.Append(prefix).AppendFormat("%s %s;\n", EmitType(mt, ATTR_IN, true).string(), name.c_str());
1181 sb.Append(prefix).AppendFormat("int32_t %sSize = %sReadInt32();\n", name.c_str(), parcelName.string());
1182 sb.Append(prefix).AppendFormat("for (int32_t i = 0; i < %sSize; ++i) {\n", name.c_str());
1185 EmitReadVariable(parcelName, "key", keyType, sb, prefix + TAB);
1186 EmitReadVariable(parcelName, "value", valueType, sb, prefix + TAB);
1187 sb.Append(prefix + TAB).AppendFormat("%s[key] = value;\n", name.c_str());
1188 sb.Append(prefix).Append("}\n");
1192 EmitReadVariableList(parcelName, name, mt, sb, prefix, emitType);
1198 StringBuilder& sb, const String& prefix, bool emitType)
1204 sb.Append(prefix).AppendFormat("%s %s;\n", EmitType(mt, ATTR_IN, true).string(), name.c_str());
1206 sb.Append(prefix).AppendFormat("int32_t %sSize = %sReadInt32();\n", name.c_str(), parcelName.string());
1207 sb.Append(prefix).AppendFormat("if (%sSize > static_cast<int32_t>(VECTOR_MAX_SIZE)) {\n", name.c_str());
1209 sb.Append(prefix + TAB)
1212 sb.Append(prefix + TAB).Append("return ERR_INVALID_DATA;\n");
1213 sb.Append(prefix).Append("}\n");
1219 sb.Append(prefix).AppendFormat("for (int32_t %s = 0; %s < %sSize; ++%s) {\n",
1222 EmitReadVariable(parcelName, valueStr.c_str(), innerType, sb, prefix + TAB);
1224 sb.Append(prefix + TAB).AppendFormat("%s.push_back(*%s);\n", name.c_str(), valueStr.c_str());
1226 sb.Append(prefix + TAB).AppendFormat("%s.push_back(%s);\n", name.c_str(), valueStr.c_str());
1228 sb.Append(prefix).Append("}\n");
1232 EmitReadVariableObject(parcelName, name, mt, sb, prefix, emitType);
1238 StringBuilder& sb, const String& prefix, bool emitType)
1248 sb.Append(prefix).AppendFormat("std::unique_ptr<%s> %s(%sReadParcelable<%s>());\n\n",
1250 sb.Append(prefix).AppendFormat("if (!%s) {\n", name.c_str());
1252 sb.Append(prefix).Append(TAB).AppendFormat(
1255 sb.Append(prefix).Append(TAB).Append("return ERR_INVALID_DATA;\n");
1256 sb.Append(prefix).Append("}\n");
1258 sb.Append(prefix).AppendFormat("std::unique_ptr<%s> info(%sReadParcelable<%s>());\n",
1260 sb.Append(prefix).Append("if (info != nullptr) {\n");
1261 sb.Append(prefix).Append(TAB).AppendFormat("%s = *info;\n", name.c_str());
1262 sb.Append(prefix).Append("}\n\n");
1269 sb.Append(prefix).AppendFormat("%s %s = iface_cast<%s>(%sReadRemoteObject());\n",
1271 sb.Append(prefix).AppendFormat("if (%s == nullptr) {\n", name.c_str());
1273 sb.Append(prefix).Append(TAB).AppendFormat("HiLog::Error(LABEL, \"Read [%s] failed!\");\n",
1276 sb.Append(prefix).Append(TAB).AppendFormat("return ERR_INVALID_DATA;\n");
1277 sb.Append(prefix).Append("}\n\n");
1279 sb.Append(prefix).AppendFormat("%s = iface_cast<%s>(%sReadRemoteObject());\n",
1289 void CppCodeEmitter::EmitLocalVariable(MetaParameter* mp, StringBuilder& sb, const String& prefix)
1296 sb.Append(prefix).AppendFormat("%s %s;\n", EmitType(mt, ATTR_IN, true).string(), name.c_str());
1298 sb.Append(prefix).AppendFormat("%s %s;\n", EmitType(mt, ATTR_IN, true).string(), name.c_str());