QDoc: Allow '0' to be used as 2nd arg for \qmlclass.

There can be occurences of \qmlclass where there is no C++ class (for a
pure QML Type for example). QDoc will ignore searching for a C++ class
when '0' is specified as second argument to the \qmlclass command.

Change-Id: I09c8c7ad302daffb0723a49967951ca623e646e4
Reviewed-by: Martin Smith <martin.smith@nokia.com>
bb10
Casper van Donderen 2012-06-28 12:49:06 +02:00 committed by Qt by Nokia
parent d359b0af2b
commit 50dfd15dcc
1 changed files with 21 additions and 11 deletions

View File

@ -728,8 +728,17 @@ Node* CppCodeParser::processTopicCommand(const Doc& doc,
else if (command == COMMAND_QMLCLASS) {
ClassNode* classNode = 0;
QStringList names = arg.first.split(QLatin1Char(' '));
if (names.size() > 1)
classNode = tree_->findClassNode(names[1].split("::"));
bool ignoreCppClass = false;
if (names.size() > 1) {
/*
If the second argument of the \\qmlclass command is 0 we should ignore the C++ class.
The second argument should only be 0 when you are documenting QML in a .qdoc file.
*/
if (names[1] != "0")
classNode = tree_->findClassNode(names[1].split("::"));
else
ignoreCppClass = true;
}
/*
Search for a node with the same name. If there is one,
@ -746,17 +755,18 @@ Node* CppCodeParser::processTopicCommand(const Doc& doc,
QmlClassNode* qcn = new QmlClassNode(tree_->root(), names[0], classNode);
qcn->setLocation(doc.startLocation());
if (isParsingCpp() || isParsingQdoc()) {
qcn->requireCppClass();
if (names.size() < 2) {
QString msg = "C++ class name not specified for class documented as "
"QML type: '\\qmlclass " + arg.first + " <class name>'";
doc.startLocation().warning(tr(msg.toLatin1().data()));
}
else if (!classNode) {
QString msg = "C++ class not found in any .h file for class documented "
QString msg;
if (names.size() < 2)
msg = "C++ class name not specified for class documented as "
"QML type: '\\qmlclass " + arg.first + " <class name>'."
" '0' should be used as second argument if there is no C++ class.";
else if (!classNode && !ignoreCppClass)
msg = "C++ class not found in any .h file for class documented "
"as QML type: '\\qmlclass " + arg.first + "'";
else if (!ignoreCppClass)
qcn->requireCppClass();
if (!msg.isEmpty())
doc.startLocation().warning(tr(msg.toLatin1().data()));
}
}
if (ncn)
ncn->addCollision(qcn);