diff options
author | Joe George <joe@zeroc.com> | 2016-06-08 18:25:54 -0400 |
---|---|---|
committer | Joe George <joe@zeroc.com> | 2016-06-08 18:35:13 -0400 |
commit | e7c350a9333560cba1c7bb4b9faa3be4e3c13bed (patch) | |
tree | f724f37a0f6285d5c34f5b3519baf00900862a05 /cpp/src/Slice/CPlusPlusUtil.cpp | |
parent | ICE-6982 and ICE-6946 (diff) | |
download | ice-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.cpp | 17 |
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; |