diff options
author | Marcelo Lira <marcelo.lira@openbossa.org> | 2010-06-02 13:33:59 -0300 |
---|---|---|
committer | Marcelo Lira <marcelo.lira@openbossa.org> | 2010-06-03 08:46:38 -0300 |
commit | e2738233c5bffb1fd0ad0f44c1a930c366329faa (patch) | |
tree | 5c40c7a0b498297da24cb69d0cab971fd571271b /headergenerator.cpp | |
parent | 7bc6f1512b1febc026d81917f33b1ea90d23fe24 (diff) |
Added support for protected fields when not using the "protected hack".
Tests were also added.
Diffstat (limited to 'headergenerator.cpp')
-rw-r--r-- | headergenerator.cpp | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/headergenerator.cpp b/headergenerator.cpp index f43fc2cde..d696b92cb 100644 --- a/headergenerator.cpp +++ b/headergenerator.cpp @@ -45,6 +45,17 @@ void HeaderGenerator::writeCopyCtor(QTextStream& s, const AbstractMetaClass* met s << INDENT << "}" << endl << endl; } +void HeaderGenerator::writeProtectedFieldAccessors(QTextStream& s, const AbstractMetaField* field) const +{ + QString fieldType = field->type()->cppSignature(); + QString fieldName = field->enclosingClass()->qualifiedCppName() + "::" + field->name(); + + s << INDENT << "inline " << fieldType << ' ' << protectedFieldGetterName(field) << "()"; + s << " { return " << fieldName << "; }" << endl; + s << INDENT << "inline void " << protectedFieldSetterName(field) << '(' << fieldType << " value)"; + s << " { " << fieldName << " = value; }" << endl; +} + void HeaderGenerator::generateClass(QTextStream& s, const AbstractMetaClass* metaClass) { ReportHandler::debugSparse("Generating header for " + metaClass->fullName()); @@ -90,6 +101,16 @@ void HeaderGenerator::generateClass(QTextStream& s, const AbstractMetaClass* met writeFunction(s, func); } +#ifdef AVOID_PROTECTED_HACK + if (metaClass->hasProtectedFields()) { + foreach (AbstractMetaField* field, metaClass->fields()) { + if (!field->isProtected()) + continue; + writeProtectedFieldAccessors(s, field); + } + } +#endif + //destructor #ifdef AVOID_PROTECTED_HACK if (!metaClass->hasPrivateDestructor()) |