summaryrefslogtreecommitdiffstats
path: root/src/tools/moc/generator.cpp
diff options
context:
space:
mode:
authorAlexis Menard <alexis.menard@nokia.com>2010-03-17 00:29:17 (GMT)
committerAlexis Menard <alexis.menard@nokia.com>2010-03-19 05:01:45 (GMT)
commit78e1a866ba5d594233db80f7aab88331db237d3a (patch)
tree8e9a05b5fa6db273a7de2528e7c1b611a4372cda /src/tools/moc/generator.cpp
parent4537b52520e0829ba89666c114d8da14d74b768e (diff)
downloadQt-78e1a866ba5d594233db80f7aab88331db237d3a.zip
Qt-78e1a866ba5d594233db80f7aab88331db237d3a.tar.gz
Qt-78e1a866ba5d594233db80f7aab88331db237d3a.tar.bz2
Implement Q_PRIVATE_PROPERTY that allows you to declare properties
where the read/write are in the d pointer. Works like Q_PRIVATE_SLOT. Reviewed-by:olivier Reviewed-by:akennedy Reviewed-by:warwick allison
Diffstat (limited to 'src/tools/moc/generator.cpp')
-rw-r--r--src/tools/moc/generator.cpp43
1 files changed, 29 insertions, 14 deletions
diff --git a/src/tools/moc/generator.cpp b/src/tools/moc/generator.cpp
index 982d95f5..ff8029b 100644
--- a/src/tools/moc/generator.cpp
+++ b/src/tools/moc/generator.cpp
@@ -738,18 +738,23 @@ void Generator::generateMetacall()
const PropertyDef &p = cdef->propertyList.at(propindex);
if (p.read.isEmpty())
continue;
+ QByteArray prefix;
+ if (p.inPrivateClass.size()) {
+ prefix = p.inPrivateClass;
+ prefix.append("->");
+ }
if (p.gspec == PropertyDef::PointerSpec)
- fprintf(out, " case %d: _a[0] = const_cast<void*>(reinterpret_cast<const void*>(%s())); break;\n",
- propindex, p.read.constData());
+ fprintf(out, " case %d: _a[0] = const_cast<void*>(reinterpret_cast<const void*>(%s%s())); break;\n",
+ propindex, prefix.constData(), p.read.constData());
else if (p.gspec == PropertyDef::ReferenceSpec)
- fprintf(out, " case %d: _a[0] = const_cast<void*>(reinterpret_cast<const void*>(&%s())); break;\n",
- propindex, p.read.constData());
+ fprintf(out, " case %d: _a[0] = const_cast<void*>(reinterpret_cast<const void*>(&%s%s())); break;\n",
+ propindex, prefix.constData(), p.read.constData());
else if (cdef->enumDeclarations.value(p.type, false))
- fprintf(out, " case %d: *reinterpret_cast<int*>(_v) = QFlag(%s()); break;\n",
- propindex, p.read.constData());
+ fprintf(out, " case %d: *reinterpret_cast<int*>(_v) = QFlag(%s%s()); break;\n",
+ propindex, prefix.constData(), p.read.constData());
else
- fprintf(out, " case %d: *reinterpret_cast< %s*>(_v) = %s(); break;\n",
- propindex, p.type.constData(), p.read.constData());
+ fprintf(out, " case %d: *reinterpret_cast< %s*>(_v) = %s%s(); break;\n",
+ propindex, p.type.constData(), prefix.constData(), p.read.constData());
}
fprintf(out, " }\n");
}
@@ -768,12 +773,17 @@ void Generator::generateMetacall()
const PropertyDef &p = cdef->propertyList.at(propindex);
if (p.write.isEmpty())
continue;
+ QByteArray prefix;
+ if (p.inPrivateClass.size()) {
+ prefix = p.inPrivateClass;
+ prefix.append("->");
+ }
if (cdef->enumDeclarations.value(p.type, false)) {
- fprintf(out, " case %d: %s(QFlag(*reinterpret_cast<int*>(_v))); break;\n",
- propindex, p.write.constData());
+ fprintf(out, " case %d: %s%s(QFlag(*reinterpret_cast<int*>(_v))); break;\n",
+ propindex, prefix.constData(), p.write.constData());
} else {
- fprintf(out, " case %d: %s(*reinterpret_cast< %s*>(_v)); break;\n",
- propindex, p.write.constData(), p.type.constData());
+ fprintf(out, " case %d: %s%s(*reinterpret_cast< %s*>(_v)); break;\n",
+ propindex, prefix.constData(), p.write.constData(), p.type.constData());
}
}
fprintf(out, " }\n");
@@ -791,8 +801,13 @@ void Generator::generateMetacall()
const PropertyDef &p = cdef->propertyList.at(propindex);
if (!p.reset.endsWith(')'))
continue;
- fprintf(out, " case %d: %s; break;\n",
- propindex, p.reset.constData());
+ QByteArray prefix;
+ if (p.inPrivateClass.size()) {
+ prefix = p.inPrivateClass;
+ prefix.append("->");
+ }
+ fprintf(out, " case %d: %s%s; break;\n",
+ propindex, prefix.constData(), p.reset.constData());
}
fprintf(out, " }\n");
}