diff options
Diffstat (limited to 'src/qdoc/cppcodeparser.cpp')
-rw-r--r-- | src/qdoc/cppcodeparser.cpp | 43 |
1 files changed, 26 insertions, 17 deletions
diff --git a/src/qdoc/cppcodeparser.cpp b/src/qdoc/cppcodeparser.cpp index 29f6a07d4..8e5d279e1 100644 --- a/src/qdoc/cppcodeparser.cpp +++ b/src/qdoc/cppcodeparser.cpp @@ -375,7 +375,7 @@ Node* CppCodeParser::processTopicCommand(const Doc& doc, func = 0; } else { - func->setMetaness(FunctionNode::MacroWithParams); + func->setMetaness(Node::MacroWithParams); QVector<Parameter> params = func->parameters(); for (int i = 0; i < params.size(); ++i) { Parameter ¶m = params[i]; @@ -391,7 +391,7 @@ Node* CppCodeParser::processTopicCommand(const Doc& doc, func = new FunctionNode(qdb_->primaryTreeRoot(), arg.first); func->setAccess(Node::Public); func->setLocation(doc.startLocation()); - func->setMetaness(FunctionNode::MacroWithoutParams); + func->setMetaness(Node::MacroWithoutParams); } else { doc.location().warning(tr("Invalid syntax in '\\%1'").arg(COMMAND_MACRO)); @@ -1050,7 +1050,7 @@ void CppCodeParser::reset() tokenizer = 0; tok = 0; access = Node::Public; - metaness_ = FunctionNode::Plain; + metaness_ = Node::Plain; lastPath_.clear(); physicalModuleName.clear(); } @@ -1647,12 +1647,24 @@ bool CppCodeParser::matchFunctionDecl(Aggregate *parent, if (matched_QT_DEPRECATED) func->setStatus(Node::Deprecated); if (matched_explicit) { /* What can be done? */ } + if (!pvect.isEmpty()) { + func->setParameters(pvect); + } func->setMetaness(metaness_); if (parent) { - if (name == parent->name()) - func->setMetaness(FunctionNode::Ctor); + if (name == parent->name()) { + Node::Metaness m = Node::Ctor; + if (!pvect.isEmpty()) { + for (int i=0; i<pvect.size(); i++) { + m = pvect.at(i).metaness(name); + if (m != Node::Ctor) + break; + } + } + func->setMetaness(m); + } else if (name.startsWith(QLatin1Char('~'))) - func->setMetaness(FunctionNode::Dtor); + func->setMetaness(Node::Dtor); } func->setStatic(matched_static); func->setConst(matchedConst); @@ -1662,9 +1674,6 @@ bool CppCodeParser::matchFunctionDecl(Aggregate *parent, func->setFinal(matchFinal); if (isQPrivateSignal) func->setPrivateSignal(); - if (!pvect.isEmpty()) { - func->setParameters(pvect); - } } if (parentPathPtr != 0) *parentPathPtr = parentPath; @@ -1774,8 +1783,8 @@ bool CppCodeParser::matchClassDecl(Aggregate *parent, Node::Access outerAccess = access; access = isClass ? Node::Private : Node::Public; - FunctionNode::Metaness outerMetaness = metaness_; - metaness_ = FunctionNode::Plain; + Node::Metaness outerMetaness = metaness_; + metaness_ = Node::Plain; bool matches = (matchDeclList(classe) && match(Tok_RightBrace) && match(Tok_Semicolon)); @@ -2156,28 +2165,28 @@ bool CppCodeParser::matchDeclList(Aggregate *parent) case Tok_private: readToken(); access = Node::Private; - metaness_ = FunctionNode::Plain; + metaness_ = Node::Plain; break; case Tok_protected: readToken(); access = Node::Protected; - metaness_ = FunctionNode::Plain; + metaness_ = Node::Plain; break; case Tok_public: readToken(); access = Node::Public; - metaness_ = FunctionNode::Plain; + metaness_ = Node::Plain; break; case Tok_signals: case Tok_Q_SIGNALS: readToken(); access = Node::Public; - metaness_ = FunctionNode::Signal; + metaness_ = Node::Signal; break; case Tok_slots: case Tok_Q_SLOTS: readToken(); - metaness_ = FunctionNode::Slot; + metaness_ = Node::Slot; break; case Tok_Q_OBJECT: readToken(); @@ -2411,7 +2420,7 @@ bool CppCodeParser::matchDocsAndStuff() generated by moc. */ node = qdb_->findFunctionNode(parentPath, clone); - if (node != 0 && node->metaness() != FunctionNode::Signal) + if (node != 0 && node->metaness() != Node::Signal) node->setLocation(clone->location()); delete clone; } |