Fix a bug at c++ generator 92/173992/1
authorJunghoon Park <jh9216.park@samsung.com>
Tue, 27 Mar 2018 10:03:28 +0000 (19:03 +0900)
committerJunghoon Park <jh9216.park@samsung.com>
Tue, 27 Mar 2018 10:03:28 +0000 (19:03 +0900)
- Serializer and deserializer for string list type genarate wrong type

Change-Id: I36ab591fc6ffc8260963bc13b6570d502e9b55ab
Signed-off-by: Junghoon Park <jh9216.park@samsung.com>
idlc/cpp_gen/cpp_gen_base.cc

index 8000967..eb660d1 100644 (file)
@@ -364,13 +364,7 @@ void CppGeneratorBase::GenListSerializer(std::ofstream& stream,
     stream << Tab(1) << "for (auto& i : c) ";
     GenBrace(stream, TAB_SIZE, [&]() {
       auto& mt = *type.GetMetaType();
-      if (!mt.IsUserDefinedType() && mt.GetMetaType() == nullptr) {
-        stream << Tab(2) << "rpc_port_parcel_write_"
-                         << parcel_type_map_[mt.ToString()]
-                         << "(h, i);" << NLine(1);
-      } else {
-        stream << Tab(2) << "h << i;" << NLine(1);
-      }
+      stream << AddIndent(TAB_SIZE * 2, ConvertTypeToSerializer(mt, "i", "h"));
     }, false);
     stream << Tab(1) << "return h;" << NLine(1);
   }, false);
@@ -385,15 +379,8 @@ void CppGeneratorBase::GenListSerializer(std::ofstream& stream,
     stream << Tab(1) << "for (int i = 0; i < l; i++) ";
     GenBrace(stream, TAB_SIZE, [&]() {
       auto& mt = *type.GetMetaType();
-      if (!mt.IsUserDefinedType() && mt.GetMetaType() == nullptr) {
-        stream << Tab(2) << ConvertTypeToString(mt) << " v;" << NLine(1);
-        stream << Tab(2) << "rpc_port_parcel_read_"
-                         << parcel_type_map_[mt.ToString()]
-                         << "(h, &v);" << NLine(1);
-      } else {
-        stream << Tab(2) << ConvertTypeToString(mt) << " v;" << NLine(1);
-        stream << Tab(2) << "h >> v;" << NLine(1);
-      }
+      stream << AddIndent(TAB_SIZE * 2,
+          ConvertTypeToDeserializer(mt, "v", "h", true));
       stream << Tab(2) << "c.push_back(std::move(v));" << NLine(1);
     }, false);
     stream << Tab(1) << "return h;" << NLine(1);