diff --git a/generator/binaryserializationcodegenerator.cpp b/generator/binaryserializationcodegenerator.cpp index 859dbfe..3746fb2 100644 --- a/generator/binaryserializationcodegenerator.cpp +++ b/generator/binaryserializationcodegenerator.cpp @@ -246,6 +246,10 @@ void BinarySerializationCodeGenerator::generate(std::ostream &os) const // print writeCustomType method os << "template <> " << visibility << " void writeCustomType<::" << relevantClass.qualifiedName << ">(BinarySerializer &serializer, const ::" << relevantClass.qualifiedName << " &customObject, BinaryVersion version)\n{\n"; + os << " // write base classes\n"; + for (const RelevantClass *baseClass : relevantBases) { + os << " serializer.write(static_castqualifiedName << " &>(customObject), version);\n"; + } if (!relevantClass.relevantBase.empty()) { os << " // write version\n" " using V = Versioning<" @@ -255,10 +259,6 @@ void BinarySerializationCodeGenerator::generate(std::ostream &os) const " serializer.writeVariableLengthUIntBE(V::applyDefault(version));\n" " }\n"; } - os << " // write base classes\n"; - for (const RelevantClass *baseClass : relevantBases) { - os << " serializer.write(static_castqualifiedName << " &>(customObject), version);\n"; - } os << " // write members\n"; auto mt = MemberTracking(); for (clang::Decl *const decl : relevantClass.record->decls()) { @@ -306,6 +306,10 @@ void BinarySerializationCodeGenerator::generate(std::ostream &os) const mt = MemberTracking(); os << "template <> " << visibility << " BinaryVersion readCustomType<::" << relevantClass.qualifiedName << ">(BinaryDeserializer &deserializer, ::" << relevantClass.qualifiedName << " &customObject, BinaryVersion version)\n{\n"; + os << " // read base classes\n"; + for (const RelevantClass *baseClass : relevantBases) { + os << " deserializer.read(static_cast<::" << baseClass->qualifiedName << " &>(customObject), version);\n"; + } if (!relevantClass.relevantBase.empty()) { os << " // read version\n" " using V = Versioning<" @@ -317,10 +321,6 @@ void BinarySerializationCodeGenerator::generate(std::ostream &os) const << "\");\n" " }\n"; } - os << " // read base classes\n"; - for (const RelevantClass *baseClass : relevantBases) { - os << " deserializer.read(static_cast<::" << baseClass->qualifiedName << " &>(customObject), version);\n"; - } os << " // read members\n"; for (clang::Decl *const decl : relevantClass.record->decls()) { // check static member variables for version markers