diff options
Diffstat (limited to 'tools/qdoc3')
-rw-r--r-- | tools/qdoc3/cppcodeparser.cpp | 3 | ||||
-rw-r--r-- | tools/qdoc3/generator.cpp | 2 | ||||
-rw-r--r-- | tools/qdoc3/htmlgenerator.cpp | 66 | ||||
-rw-r--r-- | tools/qdoc3/node.h | 5 | ||||
-rw-r--r-- | tools/qdoc3/tree.cpp | 5 |
5 files changed, 46 insertions, 35 deletions
diff --git a/tools/qdoc3/cppcodeparser.cpp b/tools/qdoc3/cppcodeparser.cpp index 562684b4d..12ec7f3a9 100644 --- a/tools/qdoc3/cppcodeparser.cpp +++ b/tools/qdoc3/cppcodeparser.cpp @@ -1737,6 +1737,9 @@ bool CppCodeParser::matchProperty(InnerNode *parent) property->setDesignable(value.toLower() == "true"); else if (key == "RESET") tre->addPropertyFunction(property, value, PropertyNode::Resetter); + else if (key == "NOTIFY") { + tre->addPropertyFunction(property, value, PropertyNode::Notifier); + } } match(Tok_RightParen); return true; diff --git a/tools/qdoc3/generator.cpp b/tools/qdoc3/generator.cpp index e92f53b45..9538dfe75 100644 --- a/tools/qdoc3/generator.cpp +++ b/tools/qdoc3/generator.cpp @@ -283,7 +283,7 @@ bool Generator::generateText(const Text& text, bool Generator::generateQmlText(const Text& text, const Node *relative, CodeMarker *marker, - const QString& qmlName) + const QString& /* qmlName */ ) { const Atom* atom = text.firstAtom(); if (atom == 0) diff --git a/tools/qdoc3/htmlgenerator.cpp b/tools/qdoc3/htmlgenerator.cpp index 425c50b12..c203c6258 100644 --- a/tools/qdoc3/htmlgenerator.cpp +++ b/tools/qdoc3/htmlgenerator.cpp @@ -539,16 +539,14 @@ int HtmlGenerator::generateAtom(const Atom *atom, break; case Atom::AnnotatedList: { - const FakeNode *fake = static_cast<const FakeNode *>(relative); - if (fake && !fake->groupMembers().isEmpty()) { - QList<Node*> values = tre->groups().values(atom->string()); - QMap<QString, const Node*> nodeMap; - for (int i = 0; i < values.size(); ++i) { - const Node* n = values.at(i); + QList<Node*> values = tre->groups().values(atom->string()); + QMap<QString, const Node*> nodeMap; + for (int i = 0; i < values.size(); ++i) { + const Node* n = values.at(i); + if ((n->status() != Node::Internal) && (n->access() != Node::Private)) nodeMap.insert(n->name(),n); - } - generateAnnotatedList(fake, marker, nodeMap); } + generateAnnotatedList(relative, marker, nodeMap); } break; case Atom::GeneratedList: @@ -2021,8 +2019,8 @@ void HtmlGenerator::generateCompactList(const Node *relative, assume that NumParagraphs is 37. Each paragraph is a QMap<QString, const Node *>. */ - QMap<QString, const Node *> paragraph[NumParagraphs]; - QString paragraphName[NumParagraphs]; + QMap<QString, const Node *> paragraph[NumParagraphs+1]; + QString paragraphName[NumParagraphs+1]; QMap<QString, const Node *>::ConstIterator c = classMap.begin(); while (c != classMap.end()) { @@ -2055,22 +2053,22 @@ void HtmlGenerator::generateCompactList(const Node *relative, We now want to compute the paragraph offset. Paragraphs 0 to 6 start at offsets 0, 3, 4, 8, 9, 14, 23. */ - int paragraphOffset[NumParagraphs + 1]; + int paragraphOffset[NumParagraphs + 1]; // 37 + 1 int i, j, k; paragraphOffset[0] = 0; - for (j = 0; j < NumParagraphs; j++) + for (j = 0; j < NumParagraphs; j++) // j = 0..36 paragraphOffset[j + 1] = paragraphOffset[j] + paragraph[j].count(); - int firstOffset[NumColumns + 1]; - int currentOffset[NumColumns]; - int currentParagraphNo[NumColumns]; - int currentOffsetInParagraph[NumColumns]; + int firstOffset[NumColumns + 1]; // 4 + 1 + int currentOffset[NumColumns]; // 4 + int currentParagraphNo[NumColumns]; // 4 + int currentOffsetInParagraph[NumColumns]; // 4 int numRows = (classMap.count() + NumColumns - 1) / NumColumns; int curParagNo = 0; - for (i = 0; i < NumColumns; i++) { + for (i = 0; i < NumColumns; i++) { // i = 0..3 firstOffset[i] = qMin(i * numRows, classMap.size()); currentOffset[i] = firstOffset[i]; @@ -2095,11 +2093,18 @@ void HtmlGenerator::generateCompactList(const Node *relative, out() << "<td>\n</td>\n"; } else { - while (currentOffsetInParagraph[i] == paragraph[currentParagraphNo[i]].count()) { + while ((currentParagraphNo[i] < NumParagraphs) && + (currentOffsetInParagraph[i] == paragraph[currentParagraphNo[i]].count())) { ++currentParagraphNo[i]; currentOffsetInParagraph[i] = 0; } - +#if 0 + if (currentParagraphNo[i] >= NumParagraphs) { + qDebug() << "### Internal error ###" << __FILE__ << __LINE__ + << currentParagraphNo[i] << NumParagraphs; + currentParagraphNo[i] = NumParagraphs - 1; + } +#endif out() << "<td align=\"right\">"; if (currentOffsetInParagraph[i] == 0) { // start a new paragraph @@ -2109,7 +2114,8 @@ void HtmlGenerator::generateCompactList(const Node *relative, } out() << "</td>\n"; - if (!paragraphName[currentParagraphNo[i]].isEmpty()) { + if ((currentParagraphNo[i] < NumParagraphs) && + !paragraphName[currentParagraphNo[i]].isEmpty()) { QMap<QString, const Node *>::Iterator it; it = paragraph[currentParagraphNo[i]].begin(); for (j = 0; j < currentOffsetInParagraph[i]; j++) @@ -3414,6 +3420,14 @@ void HtmlGenerator::generateDetailedMember(const Node *node, out() << "<p><b>Access functions:</b></p>\n"; generateSectionList(section, node, marker, CodeMarker::Accessors); } + + Section notifiers; + notifiers.members += property->notifiers(); + + if (!notifiers.members.isEmpty()) { + out() << "<p><b>Notifier signal:</b></p>\n"; + generateSectionList(notifiers, node, marker, CodeMarker::Accessors); + } } else if (node->type() == Node::Enum) { const EnumNode *enume = static_cast<const EnumNode *>(node); @@ -3708,12 +3722,6 @@ QString HtmlGenerator::getLink(const Atom *atom, } inObsoleteLink = true; } -#if 0 - qDebug() << "Link to Obsolete entity" - << (*node)->name(); - qDebug() << " relative entity" - << relative->name(); -#endif } } } @@ -3729,8 +3737,6 @@ QString HtmlGenerator::getLink(const Atom *atom, else if ((*node)->status() == Node::Internal) { qDebug() << "Link to Internal entity"; } - //else - //qDebug() << "Node Status:" << (*node)->status(); #endif } @@ -4014,10 +4020,6 @@ void HtmlGenerator::generateQmlInherits(const QmlClassNode* cn, generateText(text, cn, marker); out() << "</p>"; } -// else -// qDebug() << "generateQmlInherits(): " -// << "Inherited element not documented -->" -// << linkPair.first; } } } diff --git a/tools/qdoc3/node.h b/tools/qdoc3/node.h index 17ec4479c..61f2a76d8 100644 --- a/tools/qdoc3/node.h +++ b/tools/qdoc3/node.h @@ -590,8 +590,8 @@ class FunctionNode : public LeafNode class PropertyNode : public LeafNode { public: - enum FunctionRole { Getter, Setter, Resetter }; - enum { NumFunctionRoles = Resetter + 1 }; + enum FunctionRole { Getter, Setter, Resetter, Notifier }; + enum { NumFunctionRoles = Notifier + 1 }; PropertyNode(InnerNode *parent, const QString& name); virtual ~PropertyNode() { } @@ -609,6 +609,7 @@ class PropertyNode : public LeafNode NodeList getters() const { return functions(Getter); } NodeList setters() const { return functions(Setter); } NodeList resetters() const { return functions(Resetter); } + NodeList notifiers() const { return functions(Notifier); } bool isStored() const { return fromTrool(sto, storedDefault()); } bool isDesignable() const { return fromTrool(des, designableDefault()); } const PropertyNode *overriddenFrom() const { return overrides; } diff --git a/tools/qdoc3/tree.cpp b/tools/qdoc3/tree.cpp index d75af70ee..a5e22f1c0 100644 --- a/tools/qdoc3/tree.cpp +++ b/tools/qdoc3/tree.cpp @@ -485,6 +485,7 @@ void Tree::resolveProperties() QString getterName = (*propEntry)[PropertyNode::Getter]; QString setterName = (*propEntry)[PropertyNode::Setter]; QString resetterName = (*propEntry)[PropertyNode::Resetter]; + QString notifierName = (*propEntry)[PropertyNode::Notifier]; NodeList::ConstIterator c = parent->childNodes().begin(); while (c != parent->childNodes().end()) { @@ -499,6 +500,8 @@ void Tree::resolveProperties() property->addFunction(function, PropertyNode::Setter); } else if (function->name() == resetterName) { property->addFunction(function, PropertyNode::Resetter); + } else if (function->name() == notifierName) { + property->addFunction(function, PropertyNode::Notifier); } } } @@ -575,10 +578,12 @@ void Tree::resolveGroups() if (fake && fake->subType() == Node::Group) { fake->addGroupMember(i.value()); } +#if 0 else { if (prevGroup != i.key()) i.value()->doc().location().warning(tr("No such group '%1'").arg(i.key())); } +#endif prevGroup = i.key(); } |