From 6aa5bd023b816c3c02d87af6fb2d0f579036c0dd Mon Sep 17 00:00:00 2001 From: xuchenghua09 Date: Fri, 22 Apr 2022 17:13:04 +0000 Subject: [PATCH] =?UTF-8?q?C++=E4=B8=8Ejs=E4=BA=92=E9=80=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: xuchenghua09 --- idl/codegen/ts_code_emitter.cpp | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/idl/codegen/ts_code_emitter.cpp b/idl/codegen/ts_code_emitter.cpp index a12de734b7..7297cd03ed 100644 --- a/idl/codegen/ts_code_emitter.cpp +++ b/idl/codegen/ts_code_emitter.cpp @@ -723,8 +723,11 @@ void TsCodeEmitter::EmitWriteArrayVariable(const String& parcelName, const std:: name.c_str()); stringBuilder.Append(prefix).AppendFormat("%s.writeInt(%sArray.length);\n", parcelName.string(), name.c_str()); - stringBuilder.Append(prefix).AppendFormat("%s.writeSequenceableArray(%s);\n", parcelName.string(), + stringBuilder.Append(prefix).AppendFormat("for (let index = 0; index < %sArray.length; index++) {\n", name.c_str()); + stringBuilder.Append(prefix).Append(TAB).AppendFormat("%s.writeSequenceable(%s[index]);\n", + parcelName.string(), name.c_str()); + stringBuilder.Append(prefix).AppendFormat("}\n"); } break; default: @@ -852,11 +855,13 @@ void TsCodeEmitter::EmitReadArrayVariable(const String& parcelName, const std::s stringBuilder.Append(prefix).AppendFormat("let %s:Array<%s> = [];\n", name.c_str(), typeName.string()); stringBuilder.Append(prefix).AppendFormat("for (let index = 0; index < %sSize; index++) {\n", name.c_str()); - stringBuilder.Append(prefix).Append(TAB).AppendFormat("%s.push(new %s());\n", name.c_str(), - typeName.string()); - stringBuilder.Append(prefix).AppendFormat("}\n"); - stringBuilder.Append(prefix).AppendFormat("%s.readSequenceableArray(%s);\n", parcelName.string(), + stringBuilder.Append(prefix).Append(TAB).AppendFormat("let %sValue = new %s();\n", + name.c_str(), typeName.string()); + stringBuilder.Append(prefix).Append(TAB).AppendFormat("%s.readSequenceable(%sValue);\n", + parcelName.string(), name.c_str()); + stringBuilder.Append(prefix).Append(TAB).AppendFormat("%s.push(%sValue);\n", name.c_str(), name.c_str()); + stringBuilder.Append(prefix).AppendFormat("}\n"); } break; default: @@ -912,12 +917,15 @@ void TsCodeEmitter::EmitReadOutArrayVariable(const String& parcelName, const std String typeName = EmitType(mt).EndsWith("]") ? (EmitType(mt).Substring(0, EmitType(mt).GetLength() - 2)) : EmitType(mt); stringBuilder.Append(prefix).AppendFormat("let %s:Array<%s> = [];\n", name.c_str(), typeName.string()); - stringBuilder.Append(prefix).AppendFormat("for (let index = 0; index < %sSize; index++) {\n", name.c_str()); - stringBuilder.Append(prefix).Append(TAB).AppendFormat("%s.push(new %s());\n", name.c_str(), - typeName.string()); - stringBuilder.Append(prefix).AppendFormat("}\n"); - stringBuilder.Append(prefix).AppendFormat("%s.readSequenceableArray(%s);\n", parcelName.string(), + stringBuilder.Append(prefix).AppendFormat("for (let index = 0; index < %sSize; index++) {\n", name.c_str()); + stringBuilder.Append(prefix).Append(TAB).AppendFormat("let %sValue = new %s();\n", + name.c_str(), typeName.string()); + stringBuilder.Append(prefix).Append(TAB).AppendFormat("%s.readSequenceable(%sValue);\n", + parcelName.string(), name.c_str()); + stringBuilder.Append(prefix).Append(TAB).AppendFormat("%s.push(%sValue);\n", name.c_str(), + name.c_str()); + stringBuilder.Append(prefix).AppendFormat("}\n"); } break; default: