summaryrefslogtreecommitdiff
path: root/cpp/src/Slice/CPlusPlusUtil.cpp
diff options
context:
space:
mode:
authorJoe George <joe@zeroc.com>2016-06-08 18:25:54 -0400
committerJoe George <joe@zeroc.com>2016-06-08 18:35:13 -0400
commite7c350a9333560cba1c7bb4b9faa3be4e3c13bed (patch)
treef724f37a0f6285d5c34f5b3519baf00900862a05 /cpp/src/Slice/CPlusPlusUtil.cpp
parentICE-6982 and ICE-6946 (diff)
downloadice-e7c350a9333560cba1c7bb4b9faa3be4e3c13bed.tar.bz2
ice-e7c350a9333560cba1c7bb4b9faa3be4e3c13bed.tar.xz
ice-e7c350a9333560cba1c7bb4b9faa3be4e3c13bed.zip
Fix for ICE-ICE-6982 optional data members
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;