diff options
Diffstat (limited to 'xsde/cxx/hybrid/serializer-header.cxx')
-rw-r--r-- | xsde/cxx/hybrid/serializer-header.cxx | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/xsde/cxx/hybrid/serializer-header.cxx b/xsde/cxx/hybrid/serializer-header.cxx index db0578f..153da8d 100644 --- a/xsde/cxx/hybrid/serializer-header.cxx +++ b/xsde/cxx/hybrid/serializer-header.cxx @@ -494,15 +494,22 @@ namespace CXX os << "virtual void" << endl << "post ();" << endl; + } - // reset + // reset + // + if (reset && (rec || (mixin && recursive_base (c)))) + { + // If we are using mixin and this type has a base with _reset(), + // then we need to provide _reset() in the whole hierarchy to + // resolve an ambiguity. // - if (reset) - os << "virtual void" << endl - << "_reset ();" - << endl; + os << "virtual void" << endl + << "_reset ();" + << endl; } + if (tiein && hb) os << (tiein ? "public:" : "protected:") << endl << fq_name (c.inherits ().base (), "s:impl") << " base_impl_;" |