summaryrefslogtreecommitdiffstats
path: root/src/tools/qdoc/cppcodemarker.cpp
diff options
context:
space:
mode:
authorMartin Smith <martin.smith@nokia.com>2012-03-13 14:46:28 +0100
committerQt by Nokia <qt-info@nokia.com>2012-03-13 18:04:12 +0100
commit0d43b8c617c4bb564e0789994de94f26506ad30b (patch)
tree49beff39362b5814f540a4289da2b92294ab05e0 /src/tools/qdoc/cppcodemarker.cpp
parent8ac05adca706094f0cdeb997e6bb89945f8917b8 (diff)
qdoc3: qdoc now handles overloaded methods for QML
When a C++ class is documented as a QML type, it can have overloaded QML methods. These are now handled correctly by qdoc. The method list for QML types is now output with the full method signature. For signals and handlers too. Task-number: QTBUG-24670 Change-Id: If529d4136f5b480373b6ac25d2dceef15e6ea3db Reviewed-by: Casper van Donderen <casper.vandonderen@nokia.com>
Diffstat (limited to 'src/tools/qdoc/cppcodemarker.cpp')
-rw-r--r--src/tools/qdoc/cppcodemarker.cpp36
1 files changed, 32 insertions, 4 deletions
diff --git a/src/tools/qdoc/cppcodemarker.cpp b/src/tools/qdoc/cppcodemarker.cpp
index cc68865cc0..3e7d190fe4 100644
--- a/src/tools/qdoc/cppcodemarker.cpp
+++ b/src/tools/qdoc/cppcodemarker.cpp
@@ -342,19 +342,47 @@ QString CppCodeMarker::markedUpSynopsis(const Node *node,
QString CppCodeMarker::markedUpQmlItem(const Node* node, bool summary)
{
QString name = taggedQmlNode(node);
- if (summary) {
+ if (summary)
name = linkTag(node,name);
- } else if (node->type() == Node::QmlProperty) {
+ else if (node->type() == Node::QmlProperty) {
const QmlPropertyNode* pn = static_cast<const QmlPropertyNode*>(node);
if (pn->isAttached())
name.prepend(pn->element() + QLatin1Char('.'));
}
name = "<@name>" + name + "</@name>";
- QString synopsis = name;
+ QString synopsis;
if (node->type() == Node::QmlProperty) {
const QmlPropertyNode* pn = static_cast<const QmlPropertyNode*>(node);
- synopsis += " : " + typified(pn->dataType());
+ synopsis = name + " : " + typified(pn->dataType());
}
+ else if ((node->type() == Node::QmlMethod) ||
+ (node->type() == Node::QmlSignal) ||
+ (node->type() == Node::QmlSignalHandler)) {
+ const FunctionNode* func = static_cast<const FunctionNode*>(node);
+ if (!func->returnType().isEmpty())
+ synopsis = typified(func->returnType()) + QLatin1Char(' ') + name;
+ else
+ synopsis = name;
+ synopsis += "(";
+ if (!func->parameters().isEmpty()) {
+ QList<Parameter>::ConstIterator p = func->parameters().begin();
+ while (p != func->parameters().end()) {
+ if (p != func->parameters().begin())
+ synopsis += ", ";
+ synopsis += typified((*p).leftType());
+ if (!(*p).name().isEmpty()) {
+ if (!synopsis.endsWith("("))
+ synopsis += " ";
+ synopsis += "<@param>" + protect((*p).name()) + "</@param>";
+ }
+ synopsis += protect((*p).rightType());
+ ++p;
+ }
+ }
+ synopsis += QLatin1Char(')');
+ }
+ else
+ synopsis = name;
QString extra;
if (summary) {