summaryrefslogtreecommitdiff
path: root/cpp/src/slice2cs/Gen.cpp
diff options
context:
space:
mode:
authorJose <jose@zeroc.com>2017-11-07 22:01:17 +0100
committerJose <jose@zeroc.com>2017-11-07 22:01:17 +0100
commit667aa3707718d8cce9c8a7fc50874b084d5fc36c (patch)
tree494c3af2e669abe9be7f91e9cab9bcedfbb36547 /cpp/src/slice2cs/Gen.cpp
parentC# build failure (diff)
downloadice-667aa3707718d8cce9c8a7fc50874b084d5fc36c.tar.bz2
ice-667aa3707718d8cce9c8a7fc50874b084d5fc36c.tar.xz
ice-667aa3707718d8cce9c8a7fc50874b084d5fc36c.zip
Add ice_intialize partial method to C# class and structs
Bug ICE-8193
Diffstat (limited to 'cpp/src/slice2cs/Gen.cpp')
-rw-r--r--cpp/src/slice2cs/Gen.cpp22
1 files changed, 19 insertions, 3 deletions
diff --git a/cpp/src/slice2cs/Gen.cpp b/cpp/src/slice2cs/Gen.cpp
index a5356187564..50be45d1382 100644
--- a/cpp/src/slice2cs/Gen.cpp
+++ b/cpp/src/slice2cs/Gen.cpp
@@ -2340,10 +2340,22 @@ Slice::Gen::TypesVisitor::visitClassDefEnd(const ClassDefPtr& p)
{
_out << sp << nl << "#endregion";
}
+ const bool isAbstract = p->isLocal() && p->isAbstract();
- if(!allDataMembers.empty())
+ _out << sp << nl << "partial void ice_initialize();";
+ if(allDataMembers.empty())
+ {
+ _out << sp << nl << "#region Constructors";
+ _out << sp;
+ emitGeneratedCodeAttribute();
+ _out << nl << (isAbstract ? "protected " : "public ") << name << spar << epar;
+ _out << sb;
+ _out << nl << "ice_initialize();";
+ _out << eb;
+ _out << sp << nl << "#endregion"; // Constructors
+ }
+ else
{
- const bool isAbstract = p->isLocal() && p->isAbstract();
const bool propertyMapping = p->hasMetaData("cs:property");
_out << sp << nl << "#region Constructors";
@@ -2357,6 +2369,7 @@ Slice::Gen::TypesVisitor::visitClassDefEnd(const ClassDefPtr& p)
}
_out << sb;
writeDataMemberInitializers(dataMembers, scope, DotNet::ICloneable, propertyMapping);
+ _out << nl << "ice_initialize();";
_out << eb;
_out << sp;
@@ -2396,6 +2409,7 @@ Slice::Gen::TypesVisitor::visitClassDefEnd(const ClassDefPtr& p)
}
_out << " = " << paramName << ';';
}
+ _out << nl << "ice_initialize();";
_out << eb;
_out << sp << nl << "#endregion"; // Constructors
@@ -2965,7 +2979,7 @@ Slice::Gen::TypesVisitor::visitStructEnd(const StructPtr& p)
_out << sp << nl << "#endregion"; // Slice data members
const bool isClass = !isValueType(p);
-
+ _out << sp << nl << "partial void ice_initialize();";
_out << sp << nl << "#region Constructor";
if(isClass)
{
@@ -2981,6 +2995,7 @@ Slice::Gen::TypesVisitor::visitStructEnd(const StructPtr& p)
_out << nl << "public " << name << "()";
_out << sb;
writeDataMemberInitializers(dataMembers, scope, DotNet::ICloneable, propertyMapping);
+ _out << nl << "ice_initialize();";
_out << eb;
}
@@ -3010,6 +3025,7 @@ Slice::Gen::TypesVisitor::visitStructEnd(const StructPtr& p)
}
_out << " = " << paramName << ';';
}
+ _out << nl << "ice_initialize();";
_out << eb;
_out << sp << nl << "#endregion"; // Constructor(s)