diff options
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; |