diff options
author | Martin Smith <martin.smith@nokia.com> | 2012-03-13 14:46:28 +0100 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-03-13 18:04:12 +0100 |
commit | 0d43b8c617c4bb564e0789994de94f26506ad30b (patch) | |
tree | 49beff39362b5814f540a4289da2b92294ab05e0 /src/tools/qdoc/cppcodemarker.cpp | |
parent | 8ac05adca706094f0cdeb997e6bb89945f8917b8 (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.cpp | 36 |
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) { |