summaryrefslogtreecommitdiff
path: root/cpp/src/slice2cpp/Gen.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/slice2cpp/Gen.cpp')
-rw-r--r--cpp/src/slice2cpp/Gen.cpp20
1 files changed, 10 insertions, 10 deletions
diff --git a/cpp/src/slice2cpp/Gen.cpp b/cpp/src/slice2cpp/Gen.cpp
index 6062804d5db..ecbc5b215be 100644
--- a/cpp/src/slice2cpp/Gen.cpp
+++ b/cpp/src/slice2cpp/Gen.cpp
@@ -635,8 +635,8 @@ Slice::Gen::TypesVisitor::visitExceptionStart(const ExceptionPtr& p)
ExceptionPtr base = p->base();
DataMemberList dataMembers = p->dataMembers();
DataMemberList allDataMembers = p->allDataMembers();
- bool preserved = p->hasMetaData("preserve-slice");
- bool basePreserved = base ? base->hasMetaData("preserve-slice") : false;
+ bool basePreserved = p->inheritsMetaData("preserve-slice");
+ bool preserved = basePreserved || p->hasMetaData("preserve-slice");
bool hasDefaultValues = p->hasDefaultValues();
DataMemberList::const_iterator q;
@@ -881,8 +881,8 @@ Slice::Gen::TypesVisitor::visitExceptionEnd(const ExceptionPtr& p)
if(!p->isLocal())
{
ExceptionPtr base = p->base();
- bool preserved = p->hasMetaData("preserve-slice");
- bool basePreserved = base ? base->hasMetaData("preserve-slice") : false;
+ bool basePreserved = p->inheritsMetaData("preserve-slice");
+ bool preserved = basePreserved || p->hasMetaData("preserve-slice");
H << sp << nl << "virtual void __write(::IceInternal::BasicStream*) const;";
H << nl << "virtual void __writeImpl(::IceInternal::BasicStream*) const;";
@@ -3827,8 +3827,8 @@ Slice::Gen::ObjectVisitor::visitClassDefStart(const ClassDefPtr& p)
}
DataMemberList dataMembers = p->dataMembers();
DataMemberList allDataMembers = p->allDataMembers();
- bool preserved = p->hasMetaData("preserve-slice");
- bool basePreserved = base ? base->hasMetaData("preserve-slice") : false;
+ bool basePreserved = p->inheritsMetaData("preserve-slice");
+ bool preserved = basePreserved || p->hasMetaData("preserve-slice");
H << sp << nl << "class " << _dllExport << name << " : ";
H.useCurrentPosAsIndent();
@@ -4165,8 +4165,8 @@ Slice::Gen::ObjectVisitor::visitClassDefEnd(const ClassDefPtr& p)
{
base = bases.front();
}
- bool preserved = p->hasMetaData("preserve-slice");
- bool basePreserved = base ? base->hasMetaData("preserve-slice") : false;
+ bool basePreserved = p->inheritsMetaData("preserve-slice");
+ bool preserved = basePreserved || p->hasMetaData("preserve-slice");
if(!p->isLocal())
{
@@ -5018,8 +5018,8 @@ Slice::Gen::ObjectVisitor::emitGCFunctions(const ClassDefPtr& p)
//
bool canBeCyclic = p->canBeCyclic();
bool override = canBeCyclic && (!base || !base->canBeCyclic());
- bool preserved = p->hasMetaData("preserve-slice");
- bool basePreserved = base ? base->hasMetaData("preserve-slice") : false;
+ bool basePreserved = p->inheritsMetaData("preserve-slice");
+ bool preserved = basePreserved || p->hasMetaData("preserve-slice");
//
// We also override __addObject and __usesGC if this is the initial preserved