summaryrefslogtreecommitdiff
path: root/cpp/src/Slice/CPlusPlusUtil.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/Slice/CPlusPlusUtil.cpp')
-rw-r--r--cpp/src/Slice/CPlusPlusUtil.cpp17
1 files changed, 16 insertions, 1 deletions
diff --git a/cpp/src/Slice/CPlusPlusUtil.cpp b/cpp/src/Slice/CPlusPlusUtil.cpp
index ce2b2690324..32032668243 100644
--- a/cpp/src/Slice/CPlusPlusUtil.cpp
+++ b/cpp/src/Slice/CPlusPlusUtil.cpp
@@ -1265,7 +1265,8 @@ Slice::writeMarshalUnmarshalDataMemberInHolder(IceUtilInternal::Output& C,
}
void
-Slice::writeStreamHelpers(Output& out, const ContainedPtr& c, DataMemberList dataMembers, bool checkClassMetaData)
+Slice::writeStreamHelpers(Output& out, bool checkClassMetaData, const ContainedPtr& c, DataMemberList dataMembers,
+ DataMemberList optionalDataMembers)
{
string scoped = c->scoped();
bool classMetaData = false;
@@ -1285,6 +1286,13 @@ Slice::writeStreamHelpers(Output& out, const ContainedPtr& c, DataMemberList dat
out << sb;
for(DataMemberList::const_iterator q = dataMembers.begin(); q != dataMembers.end(); ++q)
{
+ if(!(*q)->optional())
+ {
+ writeMarshalUnmarshalDataMemberInHolder(out, holder, *q, true);
+ }
+ }
+ for(DataMemberList::const_iterator q = optionalDataMembers.begin(); q != optionalDataMembers.end(); ++q)
+ {
writeMarshalUnmarshalDataMemberInHolder(out, holder, *q, true);
}
out << eb;
@@ -1297,6 +1305,13 @@ Slice::writeStreamHelpers(Output& out, const ContainedPtr& c, DataMemberList dat
out << sb;
for(DataMemberList::const_iterator q = dataMembers.begin(); q != dataMembers.end(); ++q)
{
+ if(!(*q)->optional())
+ {
+ writeMarshalUnmarshalDataMemberInHolder(out, holder, *q, false);
+ }
+ }
+ for(DataMemberList::const_iterator q = optionalDataMembers.begin(); q != optionalDataMembers.end(); ++q)
+ {
writeMarshalUnmarshalDataMemberInHolder(out, holder, *q, false);
}
out << eb;