summaryrefslogtreecommitdiff
path: root/cpp/src
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src')
-rwxr-xr-xcpp/src/Slice/CsUtil.cpp4
-rwxr-xr-xcpp/src/Slice/VbUtil.cpp6
-rwxr-xr-xcpp/src/slice2cs/Gen.cpp12
3 files changed, 19 insertions, 3 deletions
diff --git a/cpp/src/Slice/CsUtil.cpp b/cpp/src/Slice/CsUtil.cpp
index 7e7c8962731..b956e983d24 100755
--- a/cpp/src/Slice/CsUtil.cpp
+++ b/cpp/src/Slice/CsUtil.cpp
@@ -777,6 +777,10 @@ Slice::CsGenerator::writeSequenceMarshalUnmarshalCode(Output& out,
out << sb;
if(isArray)
{
+ if(st->hasMetaData("cs:class"))
+ {
+ out << nl << param << "[__ix] = new " << typeS << "();";
+ }
out << nl << param << "[__ix].__read(" << stream << ");";
}
else
diff --git a/cpp/src/Slice/VbUtil.cpp b/cpp/src/Slice/VbUtil.cpp
index 0ee820a4ca4..40e973fba18 100755
--- a/cpp/src/Slice/VbUtil.cpp
+++ b/cpp/src/Slice/VbUtil.cpp
@@ -815,7 +815,11 @@ Slice::VbGenerator::writeSequenceMarshalUnmarshalCode(Output& out,
out.inc();
if(isArray)
{
- out << nl << param << "(__ix).__read(" << stream << ")";
+ if(st->hasMetaData("vb:class"))
+ {
+ out << nl << param << "(__ix) = New " << typeS;
+ }
+ out << nl << param << "(__ix).__read(" << stream << ")";
}
else
{
diff --git a/cpp/src/slice2cs/Gen.cpp b/cpp/src/slice2cs/Gen.cpp
index a43a89b1286..85b9091c726 100755
--- a/cpp/src/slice2cs/Gen.cpp
+++ b/cpp/src/slice2cs/Gen.cpp
@@ -2174,7 +2174,16 @@ Slice::Gen::TypesVisitor::visitStructEnd(const StructPtr& p)
_out << sp << nl << "#endregion"; // Slice data members
+ bool isClass = p->hasMetaData("cs:class");
+
_out << sp << nl << "#region Constructor";
+ if(isClass)
+ {
+ _out << "s";
+ _out << sp << nl << "public " << name << "()";
+ _out << sb;
+ _out << eb;
+ }
_out << sp << nl << "public " << name << spar;
vector<string> paramDecl;
@@ -2192,7 +2201,6 @@ Slice::Gen::TypesVisitor::visitStructEnd(const StructPtr& p)
{
_out << nl << "this." << *i << " = " << *i << ';';
}
- bool isClass = p->hasMetaData("cs:class");
bool patchStruct = !isClass && classMembers.size() != 0;
if(!p->isLocal() && patchStruct)
{
@@ -2200,7 +2208,7 @@ Slice::Gen::TypesVisitor::visitStructEnd(const StructPtr& p)
}
_out << eb;
- _out << sp << nl << "#endregion"; // Constructor
+ _out << sp << nl << "#endregion"; // Constructor(s)
if(isClass)
{