diff options
-rw-r--r-- | src/qdoc/atom.cpp | 14 | ||||
-rw-r--r-- | src/qdoc/codemarker.cpp | 9 | ||||
-rw-r--r-- | src/qdoc/codeparser.cpp | 22 | ||||
-rw-r--r-- | src/qdoc/cppcodemarker.cpp | 7 | ||||
-rw-r--r-- | src/qdoc/cppcodeparser.cpp | 10 | ||||
-rw-r--r-- | src/qdoc/doc.cpp | 8 | ||||
-rw-r--r-- | src/qdoc/generator.cpp | 27 | ||||
-rw-r--r-- | src/qdoc/helpprojectwriter.cpp | 49 | ||||
-rw-r--r-- | src/qdoc/htmlgenerator.cpp | 74 | ||||
-rw-r--r-- | src/qdoc/main.cpp | 4 | ||||
-rw-r--r-- | src/qdoc/node.cpp | 186 | ||||
-rw-r--r-- | src/qdoc/parameters.cpp | 6 | ||||
-rw-r--r-- | src/qdoc/qdoc.pro | 2 | ||||
-rw-r--r-- | src/qdoc/qdocdatabase.cpp | 123 | ||||
-rw-r--r-- | src/qdoc/qdocdatabase.h | 46 | ||||
-rw-r--r-- | src/qdoc/qdocindexfiles.cpp | 65 | ||||
-rw-r--r-- | src/qdoc/qdoctagfiles.cpp | 10 | ||||
-rw-r--r-- | src/qdoc/qmlcodeparser.cpp | 3 | ||||
-rw-r--r-- | src/qdoc/qmlmarkupvisitor.cpp | 2 | ||||
-rw-r--r-- | src/qdoc/tokenizer.cpp | 13 | ||||
-rw-r--r-- | src/qdoc/tree.cpp | 53 |
21 files changed, 381 insertions, 352 deletions
diff --git a/src/qdoc/atom.cpp b/src/qdoc/atom.cpp index a739b0b69..dff90b299 100644 --- a/src/qdoc/atom.cpp +++ b/src/qdoc/atom.cpp @@ -399,28 +399,28 @@ void LinkAtom::resolveSquareBracketParams() { if (resolved_) return; - QStringList params = squareBracketParams_.toLower().split(QLatin1Char(' ')); - foreach (const QString &p, params) { + const QStringList params = squareBracketParams_.toLower().split(QLatin1Char(' ')); + for (const auto ¶m : params) { if (!domain_) { - domain_ = QDocDatabase::qdocDB()->findTree(p); + domain_ = QDocDatabase::qdocDB()->findTree(param); if (domain_) { continue; } } if (goal_ == Node::NoType) { - goal_ = Node::goal(p); + goal_ = Node::goal(param); if (goal_ != Node::NoType) continue; } - if (p == "qml") { + if (param == "qml") { genus_ = Node::QML; continue; } - if (p == "cpp") { + if (param == "cpp") { genus_ = Node::CPP; continue; } - if (p == "doc") { + if (param == "doc") { genus_ = Node::DOC; continue; } diff --git a/src/qdoc/codemarker.cpp b/src/qdoc/codemarker.cpp index 2579c94e1..7c8843c65 100644 --- a/src/qdoc/codemarker.cpp +++ b/src/qdoc/codemarker.cpp @@ -369,10 +369,11 @@ QStringList CodeMarker::macRefsForNode(Node *node) { QStringList stringList; stringList << encode(result + QLatin1String("tag/") + macName(node)); - foreach (const QString &enumName, node->doc().enumItemNames()) { + const auto enumItemNames = node->doc().enumItemNames(); + for (const auto &name : enumItemNames) { // ### Write a plainEnumValue() and use it here stringList << encode(result + QLatin1String("econst/") + - macName(node->parent(), enumName)); + macName(node->parent(), name)); } return stringList; } @@ -412,9 +413,9 @@ QStringList CodeMarker::macRefsForNode(Node *node) break; case Node::Property: { - NodeList list = static_cast<const PropertyNode *>(node)->functions(); + const NodeList list = static_cast<const PropertyNode *>(node)->functions(); QStringList stringList; - foreach (Node *node, list) { + for (auto *node : list) { stringList += macRefsForNode(node); } return stringList; diff --git a/src/qdoc/codeparser.cpp b/src/qdoc/codeparser.cpp index 3453f0b18..99bd5b1c8 100644 --- a/src/qdoc/codeparser.cpp +++ b/src/qdoc/codeparser.cpp @@ -124,16 +124,13 @@ CodeParser *CodeParser::parserForHeaderFile(const QString &filePath) { QString fileName = QFileInfo(filePath).fileName(); - QList<CodeParser *>::ConstIterator p = parsers.constBegin(); - while (p != parsers.constEnd()) { - - QStringList headerPatterns = (*p)->headerFileNameFilter(); - foreach (const QString &pattern, headerPatterns) { + for (const auto &parser : qAsConst(parsers)) { + const QStringList headerPatterns = parser->headerFileNameFilter(); + for (const auto &pattern : headerPatterns) { QRegExp re(pattern, Qt::CaseInsensitive, QRegExp::Wildcard); if (re.exactMatch(fileName)) - return *p; + return parser; } - ++p; } return nullptr; } @@ -142,16 +139,13 @@ CodeParser *CodeParser::parserForSourceFile(const QString &filePath) { QString fileName = QFileInfo(filePath).fileName(); - QList<CodeParser *>::ConstIterator p = parsers.constBegin(); - while (p != parsers.constEnd()) { - - QStringList sourcePatterns = (*p)->sourceFileNameFilter(); - foreach (const QString &pattern, sourcePatterns) { + for (const auto &parser : parsers) { + const QStringList sourcePatterns = parser->sourceFileNameFilter(); + for (const QString &pattern : sourcePatterns) { QRegExp re(pattern, Qt::CaseInsensitive, QRegExp::Wildcard); if (re.exactMatch(fileName)) - return *p; + return parser; } - ++p; } return nullptr; } diff --git a/src/qdoc/cppcodemarker.cpp b/src/qdoc/cppcodemarker.cpp index 26a43794d..a59654cfa 100644 --- a/src/qdoc/cppcodemarker.cpp +++ b/src/qdoc/cppcodemarker.cpp @@ -245,11 +245,12 @@ QString CppCodeMarker::markedUpSynopsis(const Node *node, QStringList documentedItems = enume->doc().enumItemNames(); if (documentedItems.isEmpty()) { - foreach (const EnumItem &item, enume->items()) + const auto enumItems = enume->items(); + for (const auto &item : enumItems) documentedItems << item.name(); } - QStringList omitItems = enume->doc().omitEnumItemNames(); - foreach (const QString &item, omitItems) + const QStringList omitItems = enume->doc().omitEnumItemNames(); + for (const auto &item : omitItems) documentedItems.removeAll(item); if (documentedItems.size() <= MaxEnumValues) { diff --git a/src/qdoc/cppcodeparser.cpp b/src/qdoc/cppcodeparser.cpp index af0d9bd9b..47f3f52a6 100644 --- a/src/qdoc/cppcodeparser.cpp +++ b/src/qdoc/cppcodeparser.cpp @@ -911,12 +911,10 @@ void CppCodeParser::setExampleFileLists(PageNode *pn) exampleFiles += Config::getFilesHere(fullPath, "*.qrc *.pro *.qmlproject qmldir"); } - int i = 0; - foreach (const QString &exampleFile, exampleFiles) - exampleFiles[i++] = exampleFile.mid(sizeOfBoringPartOfName); - i = 0; - foreach (const QString &imageFile, imageFiles) - imageFiles[i++] = imageFile.mid(sizeOfBoringPartOfName); + for (auto &file : exampleFiles) + file = file.mid(sizeOfBoringPartOfName); + for (auto &file : imageFiles) + file = file.mid(sizeOfBoringPartOfName); ExampleNode *en = static_cast<ExampleNode *>(pn); en->setFiles(exampleFiles); en->setImages(imageFiles); diff --git a/src/qdoc/doc.cpp b/src/qdoc/doc.cpp index 89fe65995..90799bd8c 100644 --- a/src/qdoc/doc.cpp +++ b/src/qdoc/doc.cpp @@ -381,9 +381,7 @@ DocPrivate::DocPrivate(const Location &start, DocPrivate::~DocPrivate() { delete extra; - foreach (DitaRef *t, ditamap_) { - delete t; - } + qDeleteAll(ditamap_); } void DocPrivate::addAlso(const Text &also) @@ -3416,9 +3414,7 @@ void Doc::detach() */ TopicRef::~TopicRef() { - foreach (DitaRef *t, subrefs_) { - delete t; - } + qDeleteAll(subrefs_); } /*! diff --git a/src/qdoc/generator.cpp b/src/qdoc/generator.cpp index e4fc378b0..4c353fdd2 100644 --- a/src/qdoc/generator.cpp +++ b/src/qdoc/generator.cpp @@ -208,7 +208,7 @@ int Generator::appendSortedNames(Text &text, const ClassNode *cn, const QList<Re QStringList classNames = classMap.keys(); classNames.sort(); - foreach (const QString &className, classNames) { + for (const auto &className : qAsConst(classNames)) { text << classMap[className]; text << comma(index++, classNames.count()); } @@ -232,7 +232,7 @@ int Generator::appendSortedQmlNames(Text &text, const Node *base, const NodeList QStringList names = classMap.keys(); names.sort(); - foreach (const QString &name, names) { + for (const auto &name : qAsConst(names)) { text << classMap[name]; text << comma(index++, names.count()); } @@ -248,7 +248,8 @@ void Generator::writeOutFileNames() if (!files.open(QFile::WriteOnly)) return; QTextStream filesout(&files); - foreach (const QString &file, outFileNames_) { + const auto names = outFileNames_; + for (const auto &file : names) { filesout << file << "\n"; } } @@ -1045,7 +1046,7 @@ void Generator::generateFileList(const ExampleNode *en, CodeMarker *marker, bool text << Atom(Atom::ListLeft, openedList.styleString()); QString path; - foreach (QString file, paths) { + for (const auto &file : qAsConst(paths)) { if (images) { if (!file.isEmpty()) { QDir dirInfo; @@ -1226,9 +1227,9 @@ void Generator::generateDocumentation(Node *node) if (node->isAggregate()) { Aggregate *aggregate = static_cast<Aggregate *>(node); const NodeList &children = aggregate->childNodes(); - foreach (Node *n, children) { - if (n->isPageNode() && !n->isPrivate()) - generateDocumentation(n); + for (auto *node : children) { + if (node->isPageNode() && !node->isPrivate()) + generateDocumentation(node); } } } @@ -1487,21 +1488,21 @@ static bool hasExceptions(const Node *node, bool result = false; Node::ThreadSafeness ts = node->threadSafeness(); const NodeList &children = static_cast<const Aggregate *>(node)->childNodes(); - foreach (Node *n, children) { - if (!n->isObsolete()){ - switch (n->threadSafeness()) { + for (auto *node : children) { + if (!node->isObsolete()){ + switch (node->threadSafeness()) { case Node::Reentrant: - reentrant.append(n); + reentrant.append(node); if (ts == Node::ThreadSafe) result = true; break; case Node::ThreadSafe: - threadsafe.append(n); + threadsafe.append(node); if (ts == Node::Reentrant) result = true; break; case Node::NonReentrant: - nonreentrant.append(n); + nonreentrant.append(node); result = true; break; default: diff --git a/src/qdoc/helpprojectwriter.cpp b/src/qdoc/helpprojectwriter.cpp index 3a33ce2dd..3d45b60a4 100644 --- a/src/qdoc/helpprojectwriter.cpp +++ b/src/qdoc/helpprojectwriter.cpp @@ -65,9 +65,9 @@ void HelpProjectWriter::reset(const Config &config, // generator. outputDir = config.getOutputDir(); - QStringList names = config.getStringList(CONFIG_QHP + Config::dot + "projects"); + const QStringList names = config.getStringList(CONFIG_QHP + Config::dot + "projects"); - foreach (const QString &projectName, names) { + for (const auto &projectName : names) { HelpProject project; project.name = projectName; @@ -85,18 +85,20 @@ void HelpProjectWriter::reset(const Config &config, const auto &filterAttributes = config.getStringList(prefix + "filterAttributes"); project.filterAttributes = QSet<QString>(filterAttributes.cbegin(), filterAttributes.cend()); project.includeIndexNodes = config.getBool(prefix + "includeIndexNodes"); - QSet<QString> customFilterNames = config.subVars(prefix + "customFilters"); - foreach (const QString &filterName, customFilterNames) { + const QSet<QString> customFilterNames = config.subVars(prefix + "customFilters"); + for (const auto &filterName : customFilterNames) { QString name = config.getString(prefix + "customFilters" + Config::dot + filterName + Config::dot + "name"); const auto &filters = config.getStringList(prefix + "customFilters" + Config::dot + filterName + Config::dot + "filterAttributes"); project.customFilters[name] = QSet<QString>(filters.cbegin(), filters.cend()); } //customFilters = config.defs. - foreach (QString name, config.getStringSet(prefix + "excluded")) + const auto excludedPrefixes = config.getStringSet(prefix + "excluded"); + for (auto name : excludedPrefixes) project.excluded.insert(name.replace(QLatin1Char('\\'), QLatin1Char('/'))); - foreach (const QString &name, config.getStringList(prefix + "subprojects")) { + const auto subprojectPrefixes = config.getStringList(prefix + "subprojects"); + for (const auto &name : subprojectPrefixes) { SubProject subproject; QString subprefix = prefix + "subprojects" + Config::dot + name + Config::dot; subproject.title = config.getString(subprefix + "title"); @@ -158,7 +160,7 @@ void HelpProjectWriter::readSelectors(SubProject &subproject, const QStringList for (auto it = pageTypeHash.cbegin(), end = pageTypeHash.cend(); it != end; ++it) fullSubset.insert(it.value()); - foreach (const QString &selector, selectors) { + for (const QString &selector : selectors) { QStringList pieces = selector.split(QLatin1Char(':')); if (pieces.size() == 1) { QString lower = selector.toLower(); @@ -275,7 +277,8 @@ bool HelpProjectWriter::generateSection(HelpProject &project, if (node->isGroup() || node->isModule() || node->isQmlModule()) { if (project.subprojects[i].groups.contains(node->name().toLower())) { const CollectionNode *cn = static_cast<const CollectionNode *>(node); - foreach (const Node *m, cn->members()) { + const auto members = cn->members(); + for (const Node *m : members) { QString memberName = m->isTextPageNode() ? m->fullTitle() : m->fullDocumentName(); project.subprojects[i].nodes[memberName] = m; @@ -309,7 +312,8 @@ bool HelpProjectWriter::generateSection(HelpProject &project, case Node::JsType: case Node::JsBasicType: if (node->doc().hasKeywords()) { - foreach (const Atom *keyword, node->doc().keywords()) { + const auto keywords = node->doc().keywords(); + for (const Atom *keyword : keywords) { if (!keyword->string().isEmpty()) { QStringList details; details << keyword->string() @@ -332,7 +336,8 @@ bool HelpProjectWriter::generateSection(HelpProject &project, project.keywords.append(keywordDetails(node)); { const EnumNode *enumNode = static_cast<const EnumNode *>(node); - foreach (const EnumItem &item, enumNode->items()) { + const auto items = enumNode->items(); + for (const auto &item : items) { QStringList details; if (enumNode->itemAccess(item.name()) == Node::Private) @@ -359,7 +364,8 @@ bool HelpProjectWriter::generateSection(HelpProject &project, const CollectionNode *cn = static_cast<const CollectionNode *>(node); if (!cn->fullTitle().isEmpty()) { if (cn->doc().hasKeywords()) { - foreach (const Atom *keyword, cn->doc().keywords()) { + const auto keywords = cn->doc().keywords(); + for (const Atom *keyword : keywords) { if (!keyword->string().isEmpty()) { QStringList details; details << keyword->string() @@ -442,7 +448,8 @@ bool HelpProjectWriter::generateSection(HelpProject &project, const PageNode *pn = static_cast<const PageNode *>(node); if (!pn->fullTitle().isEmpty()) { if (pn->doc().hasKeywords()) { - foreach (const Atom *keyword, pn->doc().keywords()) { + const auto keywords = pn->doc().keywords(); + for (const Atom *keyword : keywords) { if (!keyword->string().isEmpty()) { QStringList details; details << keyword->string() @@ -494,7 +501,7 @@ void HelpProjectWriter::generateSections(HelpProject &project, QXmlStreamWriter // Ensure that we don't visit nodes more than once. QSet<const Node *> childSet; const NodeList &children = aggregate->childNodes(); - foreach (const Node *child, children) { + for (const auto *child : children) { // Skip related non-members adopted by some other aggregate if (child->parent() != aggregate) continue; @@ -510,7 +517,7 @@ void HelpProjectWriter::generateSections(HelpProject &project, QXmlStreamWriter childSet << child; } } - foreach (const Node *child, childSet) + for (const auto *child : qAsConst(childSet)) generateSections(project, writer, child); } } @@ -688,7 +695,7 @@ void HelpProjectWriter::generateProject(HelpProject &project) writer.writeAttribute("name", it.key()); QStringList sortedAttributes = it.value().values(); sortedAttributes.sort(); - foreach (const QString &filter, sortedAttributes) + for (const auto &filter : qAsConst(sortedAttributes)) writer.writeTextElement("filterAttribute", filter); writer.writeEndElement(); // customFilter } @@ -699,7 +706,7 @@ void HelpProjectWriter::generateProject(HelpProject &project) // Write filterAttribute elements. QStringList sortedFilterAttributes = project.filterAttributes.values(); sortedFilterAttributes.sort(); - foreach (const QString &filterName, sortedFilterAttributes) + for (const auto &filterName : qAsConst(sortedFilterAttributes)) writer.writeTextElement("filterAttribute", filterName); writer.writeStartElement("toc"); @@ -786,14 +793,14 @@ void HelpProjectWriter::generateProject(HelpProject &project) if (subproject.sortPages) { QStringList titles = subproject.nodes.keys(); titles.sort(); - foreach (const QString &title, titles) { + for (const auto &title : qAsConst(titles)) { writeNode(project, writer, subproject.nodes[title]); } } else { // Find a contents node and navigate from there, using the NextLink values. QSet<QString> visited; bool contentsFound = false; - foreach (const Node *node, subproject.nodes) { + for (const auto *node : qAsConst(subproject.nodes)) { QString nextTitle = node->links().value(Node::NextLink).first; if (!nextTitle.isEmpty() && node->links().value(Node::ContentsLink).first.isEmpty()) { @@ -821,7 +828,7 @@ void HelpProjectWriter::generateProject(HelpProject &project) std::sort(subnodes.begin(), subnodes.end(), Node::nodeNameLessThan); - foreach (const Node *node, subnodes) + for (const auto *node : qAsConst(subnodes)) writeNode(project, writer, node); } } @@ -838,7 +845,7 @@ void HelpProjectWriter::generateProject(HelpProject &project) writer.writeStartElement("keywords"); std::sort(project.keywords.begin(), project.keywords.end()); - foreach (const QStringList &details, project.keywords) { + for (const QStringList &details : qAsConst(project.keywords)) { writer.writeStartElement("keyword"); writer.writeAttribute("name", details[0]); writer.writeAttribute("id", details[1]); @@ -856,7 +863,7 @@ void HelpProjectWriter::generateProject(HelpProject &project) files.unite(project.extraFiles); QStringList sortedFiles = files.values(); sortedFiles.sort(); - foreach (const QString &usedFile, sortedFiles) { + for (const auto &usedFile : qAsConst(sortedFiles)) { if (!usedFile.isEmpty()) writer.writeTextElement("file", usedFile); } diff --git a/src/qdoc/htmlgenerator.cpp b/src/qdoc/htmlgenerator.cpp index 2d31a2cde..7810e7793 100644 --- a/src/qdoc/htmlgenerator.cpp +++ b/src/qdoc/htmlgenerator.cpp @@ -450,10 +450,10 @@ QString HtmlGenerator::generateLinksToLinksPage(const QString &module, CodeMarke out() << "Click on a link to go to the location of the link. The link is marked "; out() << "with red asterisks. "; out() << "Click on the marked link to see if it goes to the right place.</p>\n"; - TargetList* tlist = qdb_->getTargetList(module); + const TargetList *tlist = qdb_->getTargetList(module); if (tlist) { out() << "<table class=\"valuelist\"><tr valign=\"top\" class=\"odd\"><th class=\"tblConst\">Link to link...</th><th class=\"tblval\">In file...</th><th class=\"tbldscr\">Somewhere after line number...</th></tr>\n"; - foreach (TargetLoc* t, *tlist) { + for (const TargetLoc *t : *tlist) { // e.g.: <a name="link-8421"></a><a href="layout.html">Layout Management</a> out() << "<tr><td class=\"topAlign\">"; out() << "<a href=\"" << t->fileName_ << "#" << t->target_ << "\">"; @@ -483,7 +483,7 @@ QString HtmlGenerator::generateLinksToBrokenLinksPage(CodeMarker *marker, int &c { QString fileName; NamespaceNode *node = qdb_->primaryTreeRoot(); - TargetList* tlist = qdb_->getTargetList("broken"); + const TargetList *tlist = qdb_->getTargetList("broken"); if (tlist && !tlist->isEmpty()) { count = tlist->size(); fileName = "aaa-links-to-broken-links.html"; @@ -495,7 +495,7 @@ QString HtmlGenerator::generateLinksToBrokenLinksPage(CodeMarker *marker, int &c out() << "Click on a link to go to the broken link. "; out() << "The link's target could not be found.</p>\n"; out() << "<table class=\"valuelist\"><tr valign=\"top\" class=\"odd\"><th class=\"tblConst\">Link to broken link...</th><th class=\"tblval\">In file...</th><th class=\"tbldscr\">Somewhere after line number...</th></tr>\n"; - foreach (TargetLoc* t, *tlist) { + for (const TargetLoc *t : *tlist) { // e.g.: <a name="link-8421"></a><a href="layout.html">Layout Management</a> out() << "<tr><td class=\"topAlign\">"; out() << "<a href=\"" << t->fileName_ << "#" << t->target_ << "\">"; @@ -2893,7 +2893,8 @@ void HtmlGenerator::generateClassHierarchy(const Node *relative, NodeMap &classM stack.top().erase(stack.top().begin()); NodeMap newTop; - foreach (const RelatedClass &d, child->derivedClasses()) { + const auto derivedClasses = child->derivedClasses(); + for (const RelatedClass &d : derivedClasses) { if (d.node_ && d.node_->isInAPI()) newTop.insert(d.node_->name(), d.node_); } @@ -2926,7 +2927,7 @@ void HtmlGenerator::generateAnnotatedList(const Node *relative, { NodeMultiMap nmm; bool allInternal = true; - foreach (Node *node, unsortedNodes) { + for (auto *node : unsortedNodes) { if (!node->isInternal() && !node->isObsolete()) { allInternal = false; nmm.insert(node->fullName(relative), node); @@ -2939,7 +2940,7 @@ void HtmlGenerator::generateAnnotatedList(const Node *relative, NodeList nodes = nmm.values(); std::sort(nodes.begin(), nodes.end(), Node::nodeNameLessThan); - foreach (const Node *node, nodes) { + for (const auto *node : qAsConst(nodes)) { if (++row % 2 == 1) out() << "<tr class=\"odd topAlign\">"; else @@ -2983,7 +2984,8 @@ void HtmlGenerator::generateAnnotatedLists(const Node *relative, CodeMarker *marker, const NodeMultiMap &nmm) { - foreach (const QString &name, nmm.uniqueKeys()) { + const auto &uniqueKeys = nmm.uniqueKeys(); + for (const QString &name : uniqueKeys) { if (!name.isEmpty()) { out() << "<h2 id=\"" << registerRef(name.toLower()) << "\">" << protectEnc(name) << "</h2>\n"; @@ -3276,7 +3278,8 @@ bool HtmlGenerator::generateGroupList(CollectionNode *cn) if (cn->members().isEmpty()) return false; out() << "<ul>\n"; - foreach (const Node *node, cn->members()) { + const auto members = cn->members(); + for (const auto *node : members) { out() << "<li>" << "<a href=\"#" << Doc::canonicalTitle(node->title()) @@ -3301,12 +3304,13 @@ void HtmlGenerator::generateList(const Node *relative, CodeMarker *marker, const else if (selector == QLatin1String("js-modules")) type = Node::JsModule; if (type != Node::NoType) { - NodeList nl; + NodeList nodeList; qdb_->mergeCollections(type, cnm, relative); - CollectionList cl = cnm.values(); - foreach (CollectionNode *cn, cl) - nl.append(cn); - generateAnnotatedList(relative, marker, nl); + const CollectionList collectionList = cnm.values(); + nodeList.reserve(collectionList.size()); + for (auto *collectionNode : collectionList) + nodeList.append(collectionNode); + generateAnnotatedList(relative, marker, nodeList); } else { /* @@ -4021,12 +4025,12 @@ void HtmlGenerator::generateDetailedMember(const Node *node, const QVector<Node *> &collective = scn->collective(); if (collective.size() > 1) out() << "<div class=\"fngroup\">\n"; - foreach (const Node *n, collective) { - if (n->isFunction()) { - nodeRef = refForNode(n); + for (const auto *node : collective) { + if (node->isFunction()) { + nodeRef = refForNode(node); out() << "<h3 class=\"fn fngroupitem\" id=\"" << nodeRef << "\">"; out() << "<a name=\"" + nodeRef + "\"></a>"; - generateSynopsis(n, relative, marker, Section::Details); + generateSynopsis(node, relative, marker, Section::Details); out() << "</h3>"; } } @@ -4163,8 +4167,8 @@ void HtmlGenerator::generateMacRef(const Node *node, CodeMarker *marker) if (!pleaseGenerateMacRef || marker == 0) return; - QStringList macRefs = marker->macRefsForNode(node); - foreach (const QString &macRef, macRefs) + const QStringList macRefs = marker->macRefsForNode(node); + for (const auto &macRef : macRefs) out() << "<a name=\"" << "//apple_ref/" << macRef << "\"></a>\n"; } #endif @@ -4470,7 +4474,7 @@ void HtmlGenerator::generateExtractionMark(const Node *node, ExtractionMarkType out() << "-prop"; const PropertyNode *prop = static_cast<const PropertyNode *>(node); const NodeList &list = prop->functions(); - foreach (const Node *propFuncNode, list) { + for (const auto *propFuncNode : list) { if (propFuncNode->isFunction()) { const FunctionNode *func = static_cast<const FunctionNode *>(propFuncNode); out() << "$$$" + func->name() + func->parameters().rawSignature().remove(' '); @@ -4478,7 +4482,8 @@ void HtmlGenerator::generateExtractionMark(const Node *node, ExtractionMarkType } } else if (node->isEnumType()) { const EnumNode *enumNode = static_cast<const EnumNode *>(node); - foreach (const EnumItem &item, enumNode->items()) + const auto items = enumNode->items(); + for (const auto &item : items) out() << "$$$" + item.name(); } } else if (markType == BriefMark) { @@ -4570,7 +4575,8 @@ void HtmlGenerator::generateManifestFile(const QString &manifest, const QString QString docUrl = manifestDir + fileBase(en) + ".html"; writer.writeAttribute("docUrl", docUrl); QStringList proFiles; - foreach (const QString file, en->files()) { + const auto exampleFiles = en->files(); + for (const QString &file : exampleFiles) { if (file.endsWith(".pro") || file.endsWith(".qmlproject") || file.endsWith(".pyproject")) proFiles << file; } @@ -4603,7 +4609,8 @@ void HtmlGenerator::generateManifestFile(const QString &manifest, const QString QString fullName = project + QLatin1Char('/') + en->title(); QSet<QString> tags; for (int idx=0; idx < manifestMetaContent.size(); ++idx) { - foreach (const QString &name, manifestMetaContent[idx].names) { + const auto names = manifestMetaContent[idx].names; + for (const QString &name : names) { bool match = false; int wildcard = name.indexOf(QChar('*')); switch (wildcard) { @@ -4618,7 +4625,8 @@ void HtmlGenerator::generateManifestFile(const QString &manifest, const QString } if (match) { tags += manifestMetaContent[idx].tags; - foreach (const QString &attr, manifestMetaContent[idx].attributes) { + const auto attributes = manifestMetaContent[idx].attributes; + for (const QString &attr : attributes) { QLatin1Char div(':'); QStringList attrList = attr.split(div); if (attrList.count() == 1) @@ -4694,7 +4702,7 @@ void HtmlGenerator::generateManifestFile(const QString &manifest, const QString bool wrote_one = false; QStringList sortedTags = tags.values(); sortedTags.sort(); - foreach (const QString &tag, sortedTags) { + for (const auto &tag : qAsConst(sortedTags)) { if (wrote_one) writer.writeCharacters(","); writer.writeCharacters(tag); @@ -4705,7 +4713,8 @@ void HtmlGenerator::generateManifestFile(const QString &manifest, const QString QString ename = en->name().mid(en->name().lastIndexOf('/')+1); QMap<int, QString> filesToOpen; - foreach (QString file, en->files()) { + const auto files = en->files(); + for (const QString &file : files) { QFileInfo fileInfo(file); QString fileName = fileInfo.fileName().toLower(); // open .qml, .cpp and .h files with a @@ -4759,9 +4768,10 @@ void HtmlGenerator::generateManifestFile(const QString &manifest, const QString */ void HtmlGenerator::readManifestMetaContent(const Config &config) { - QStringList names = config.getStringList(CONFIG_MANIFESTMETA + Config::dot + QStringLiteral("filters")); + const QStringList names = + config.getStringList(CONFIG_MANIFESTMETA + Config::dot + QStringLiteral("filters")); - foreach (const QString &manifest, names) { + for (const auto &manifest : names) { ManifestMetaFilter filter; QString prefix = CONFIG_MANIFESTMETA + Config::dot + manifest + Config::dot; filter.names = config.getStringSet(prefix + QStringLiteral("names")); @@ -4783,7 +4793,7 @@ void HtmlGenerator::reportOrphans(const Aggregate *parent) return; QString message = "has documentation but no \\relates command"; - foreach (Node *child, children) { + for (const auto *child : children) { if (!child || child->isInternal() || child->doc().isEmpty() || !child->isRelatedNonmember()) continue; switch (child->nodeType()) { @@ -4862,9 +4872,9 @@ void HtmlGenerator::generateAssociatedPropertyNotes(FunctionNode *fn) out() << "<p><b>Note:</b> "; NodeList &nodes = fn->associatedProperties(); std::sort(nodes.begin(), nodes.end(), Node::nodeNameLessThan); - foreach (const Node *n, nodes) { + for (const auto *node : qAsConst(nodes)) { QString msg; - const PropertyNode *pn = static_cast<const PropertyNode *>(n); + const PropertyNode *pn = static_cast<const PropertyNode *>(node); switch (pn->role(fn)) { case PropertyNode::Getter: msg = QStringLiteral("Getter function "); diff --git a/src/qdoc/main.cpp b/src/qdoc/main.cpp index 364cfb63f..c85ddb44d 100644 --- a/src/qdoc/main.cpp +++ b/src/qdoc/main.cpp @@ -94,8 +94,8 @@ static void loadIndexFiles(Config &config, const QSet<QString> &formats) { QDocDatabase *qdb = QDocDatabase::qdocDB(); QStringList indexFiles; - QStringList configIndexes = config.getStringList(CONFIG_INDEXES); - foreach (const QString &index, configIndexes) { + const QStringList configIndexes = config.getStringList(CONFIG_INDEXES); + for (const auto &index : configIndexes) { QFileInfo fi(index); if (fi.exists() && fi.isFile()) indexFiles << index; diff --git a/src/qdoc/node.cpp b/src/qdoc/node.cpp index c1a204c9a..f4bfcbc18 100644 --- a/src/qdoc/node.cpp +++ b/src/qdoc/node.cpp @@ -2184,7 +2184,7 @@ QStringList Aggregate::primaryKeys() */ void Aggregate::markUndocumentedChildrenInternal() { - foreach (Node *child, children_) { + for (auto *child : qAsConst(children_)) { if (!child->isSharingComment() && !child->hasDoc() && !child->isDontDocument()) { if (!child->docMustBeGenerated()) { if (child->isFunction()) { @@ -2258,9 +2258,9 @@ void Aggregate::normalizeOverloads() /* Recursive part. */ - foreach (Node *n, children_) { - if (n->isAggregate()) - static_cast<Aggregate *>(n)->normalizeOverloads(); + for (auto *node : qAsConst(children_)) { + if (node->isAggregate()) + static_cast<Aggregate *>(node)->normalizeOverloads(); } } @@ -2291,7 +2291,7 @@ const NodeList &Aggregate::nonfunctionList() */ const EnumNode *Aggregate::findEnumNodeForValue(const QString &enumValue) const { - foreach (const Node *node, enumChildren_) { + for (const auto *node : qAsConst(enumChildren_)) { const EnumNode *en = static_cast<const EnumNode *>(node); if (en->hasItem(enumValue)) return en; @@ -2503,8 +2503,8 @@ void Aggregate::adoptChild(Node *child) void Aggregate::setOutputSubdirectory(const QString &t) { Node::setOutputSubdirectory(t); - foreach (Node *n, children_) - n->setOutputSubdirectory(t); + for (auto *node : qAsConst(children_)) + node->setOutputSubdirectory(t); } /*! @@ -2516,7 +2516,7 @@ QmlPropertyNode *Aggregate::hasQmlProperty(const QString &n) const NodeType goal = Node::QmlProperty; if (isJsNode()) goal = Node::JsProperty; - foreach (Node *child, children_) { + for (auto *child : qAsConst(children_)) { if (child->nodeType() == goal) { if (child->name() == n) return static_cast<QmlPropertyNode *>(child); @@ -2535,7 +2535,7 @@ QmlPropertyNode *Aggregate::hasQmlProperty(const QString &n, bool attached) cons NodeType goal = Node::QmlProperty; if (isJsNode()) goal = Node::JsProperty; - foreach (Node *child, children_) { + for (auto *child : qAsConst(children_)) { if (child->nodeType() == goal) { if (child->name() == n && child->isAttached() == attached) return static_cast<QmlPropertyNode *>(child); @@ -2664,9 +2664,9 @@ void Aggregate::findAllFunctions(NodeMapMap &functionIndex) fn = fn->nextOverload(); } } - foreach (Node *n, children_) { - if (n->isAggregate() && !n->isPrivate()) - static_cast<Aggregate *>(n)->findAllFunctions(functionIndex); + for (Node *node : qAsConst(children_)) { + if (node->isAggregate() && !node->isPrivate()) + static_cast<Aggregate *>(node)->findAllFunctions(functionIndex); } } @@ -2686,11 +2686,11 @@ void Aggregate::findAllFunctions(NodeMapMap &functionIndex) */ void Aggregate::findAllNamespaces(NodeMultiMap &namespaces) { - foreach (Node *n, children_) { - if (n->isAggregate() && !n->isPrivate()) { - if (n->isNamespace() && !n->name().isEmpty()) - namespaces.insert(n->name(), n); - static_cast<Aggregate *>(n)->findAllNamespaces(namespaces); + for (auto *node : qAsConst(children_)) { + if (node->isAggregate() && !node->isPrivate()) { + if (node->isNamespace() && !node->name().isEmpty()) + namespaces.insert(node->name(), node); + static_cast<Aggregate *>(node)->findAllNamespaces(namespaces); } } } @@ -2701,11 +2701,11 @@ void Aggregate::findAllNamespaces(NodeMultiMap &namespaces) */ bool Aggregate::hasObsoleteMembers() { - foreach (Node *n, children_) { - if (!n->isPrivate() && n->isObsolete()) { - if (n->isFunction() || n->isProperty() || n->isEnumType() || - n->isTypedef() || n->isTypeAlias() || n->isVariable() || - n->isQmlProperty() || n->isJsProperty()) + for (const auto *node : qAsConst(children_)) { + if (!node->isPrivate() && node->isObsolete()) { + if (node->isFunction() || node->isProperty() || node->isEnumType() || + node->isTypedef() || node->isTypeAlias() || node->isVariable() || + node->isQmlProperty() || node->isJsProperty()) return true; } } @@ -2720,26 +2720,24 @@ bool Aggregate::hasObsoleteMembers() */ void Aggregate::findAllObsoleteThings() { - foreach (Node *n, children_) { - if (!n->isPrivate()) { - QString name = n->name(); - if (n->isObsolete()) { - if (n->isClassNode()) - QDocDatabase::obsoleteClasses().insert(n->qualifyCppName(), n); - else if (n->isQmlType() || n->isJsType()) - QDocDatabase::obsoleteQmlTypes().insert(n->qualifyQmlName(), n); - } else if (n->isClassNode()) { - Aggregate *a = static_cast<Aggregate *>(n); + for (auto *node : qAsConst(children_)) { + if (!node->isPrivate()) { + QString name = node->name(); + if (node->isObsolete()) { + if (node->isClassNode()) + QDocDatabase::obsoleteClasses().insert(node->qualifyCppName(), node); + else if (node->isQmlType() || node->isJsType()) + QDocDatabase::obsoleteQmlTypes().insert(node->qualifyQmlName(), node); + } else if (node->isClassNode()) { + Aggregate *a = static_cast<Aggregate *>(node); if (a->hasObsoleteMembers()) - QDocDatabase::classesWithObsoleteMembers().insert(n->qualifyCppName(), n); - } - else if (n->isQmlType() || n->isJsType()) { - Aggregate *a = static_cast<Aggregate *>(n); + QDocDatabase::classesWithObsoleteMembers().insert(node->qualifyCppName(), node); + } else if (node->isQmlType() || node->isJsType()) { + Aggregate *a = static_cast<Aggregate *>(node); if (a->hasObsoleteMembers()) - QDocDatabase::qmlTypesWithObsoleteMembers().insert(n->qualifyQmlName(), n); - } - else if (n->isAggregate()) { - static_cast<Aggregate *>(n)->findAllObsoleteThings(); + QDocDatabase::qmlTypesWithObsoleteMembers().insert(node->qualifyQmlName(), node); + } else if (node->isAggregate()) { + static_cast<Aggregate *>(node)->findAllObsoleteThings(); } } } @@ -2752,24 +2750,24 @@ void Aggregate::findAllObsoleteThings() */ void Aggregate::findAllClasses() { - foreach (Node *n, children_) { - if (!n->isPrivate() && !n->isInternal() && - n->tree()->camelCaseModuleName() != QString("QDoc")) { - if (n->isClassNode()) { - QDocDatabase::cppClasses().insert(n->qualifyCppName().toLower(), n); - } else if (n->isQmlType() || n->isQmlBasicType() || n->isJsType() || n->isJsBasicType()) { - QString name = n->unqualifyQmlName(); - QDocDatabase::qmlTypes().insert(name, n); + for (auto *node : qAsConst(children_)) { + if (!node->isPrivate() && !node->isInternal() && + node->tree()->camelCaseModuleName() != QString("QDoc")) { + if (node->isClassNode()) { + QDocDatabase::cppClasses().insert(node->qualifyCppName().toLower(), node); + } else if (node->isQmlType() || node->isQmlBasicType() || node->isJsType() || node->isJsBasicType()) { + QString name = node->unqualifyQmlName(); + QDocDatabase::qmlTypes().insert(name, node); //also add to the QML basic type map - if (n->isQmlBasicType() || n->isJsBasicType()) - QDocDatabase::qmlBasicTypes().insert(name, n); - } else if (n->isExample()) { + if (node->isQmlBasicType() || node->isJsBasicType()) + QDocDatabase::qmlBasicTypes().insert(name, node); + } else if (node->isExample()) { // use the module index title as key for the example map - QString title = n->tree()->indexTitle(); - if (!QDocDatabase::examples().contains(title, n)) - QDocDatabase::examples().insert(title, n); - } else if (n->isAggregate()) { - static_cast<Aggregate *>(n)->findAllClasses(); + QString title = node->tree()->indexTitle(); + if (!QDocDatabase::examples().contains(title, node)) + QDocDatabase::examples().insert(title, node); + } else if (node->isAggregate()) { + static_cast<Aggregate *>(node)->findAllClasses(); } } } @@ -2781,12 +2779,12 @@ void Aggregate::findAllClasses() */ void Aggregate::findAllAttributions(NodeMultiMap &attributions) { - foreach (Node *n, children_) { - if (!n->isPrivate()) { - if (n->pageType() == Node::AttributionPage) - attributions.insertMulti(n->tree()->indexTitle(), n); - else if (n->isAggregate()) - static_cast<Aggregate *>(n)->findAllAttributions(attributions); + for (auto *node : qAsConst(children_)) { + if (!node->isPrivate()) { + if (node->pageType() == Node::AttributionPage) + attributions.insertMulti(node->tree()->indexTitle(), node); + else if (node->isAggregate()) + static_cast<Aggregate *>(node)->findAllAttributions(attributions); } } } @@ -2801,10 +2799,10 @@ void Aggregate::findAllAttributions(NodeMultiMap &attributions) */ void Aggregate::findAllSince() { - foreach (Node *n, children_) { - QString sinceString = n->since(); + for (auto *node : qAsConst(children_)) { + QString sinceString = node->since(); // Insert a new entry into each map for each new since string found. - if (!n->isPrivate() && !sinceString.isEmpty()) { + if (!node->isPrivate() && !sinceString.isEmpty()) { NodeMultiMapMap::iterator nsmap = QDocDatabase::newSinceMaps().find(sinceString); if (nsmap == QDocDatabase::newSinceMaps().end()) nsmap = QDocDatabase::newSinceMaps().insert(sinceString, NodeMultiMap()); @@ -2817,34 +2815,34 @@ void Aggregate::findAllSince() if (nqcmap == QDocDatabase::newQmlTypeMaps().end()) nqcmap = QDocDatabase::newQmlTypeMaps().insert(sinceString, NodeMap()); - if (n->isFunction()) { + if (node->isFunction()) { // Insert functions into the general since map. - FunctionNode *fn = static_cast<FunctionNode *>(n); + FunctionNode *fn = static_cast<FunctionNode *>(node); if (!fn->isObsolete() && !fn->isSomeCtor() && !fn->isDtor()) nsmap.value().insert(fn->name(), fn); } - else if (n->isClassNode()) { + else if (node->isClassNode()) { // Insert classes into the since and class maps. - QString name = n->qualifyWithParentName(); - nsmap.value().insert(name, n); - ncmap.value().insert(name, n); - } else if (n->isQmlType() || n->isJsType()) { + QString name = node->qualifyWithParentName(); + nsmap.value().insert(name, node); + ncmap.value().insert(name, node); + } else if (node->isQmlType() || node->isJsType()) { // Insert QML elements into the since and element maps. - QString name = n->qualifyWithParentName(); - nsmap.value().insert(name, n); - nqcmap.value().insert(name, n); - } else if (n->isQmlProperty() || n->isJsProperty()) { + QString name = node->qualifyWithParentName(); + nsmap.value().insert(name, node); + nqcmap.value().insert(name, node); + } else if (node->isQmlProperty() || node->isJsProperty()) { // Insert QML properties into the since map. - nsmap.value().insert(n->name(), n); + nsmap.value().insert(node->name(), node); } else { // Insert external documents into the general since map. - QString name = n->qualifyWithParentName(); - nsmap.value().insert(name, n); + QString name = node->qualifyWithParentName(); + nsmap.value().insert(name, node); } } // Recursively find child nodes with since commands. - if (n->isAggregate()) - static_cast<Aggregate *>(n)->findAllSince(); + if (node->isAggregate()) + static_cast<Aggregate *>(node)->findAllSince(); } } @@ -2859,7 +2857,7 @@ void Aggregate::resolveQmlInheritance() { NodeMap previousSearches; // Do we need recursion? - foreach (Node *child, children_) { + for (auto *child : qAsConst(children_)) { if (!child->isQmlType() && !child->isJsType()) continue; QmlTypeNode *type = static_cast<QmlTypeNode *>(child); @@ -3119,8 +3117,8 @@ bool NamespaceNode::isDocumentedHere() const */ bool NamespaceNode::hasDocumentedChildren() const { - foreach (Node *n, children_) { - if (n->isInAPI()) + for (const auto *node : qAsConst(children_)) { + if (node->isInAPI()) return true; } return false; @@ -3133,15 +3131,15 @@ bool NamespaceNode::hasDocumentedChildren() const */ void NamespaceNode::reportDocumentedChildrenInUndocumentedNamespace() const { - foreach (Node *n, children_) { - if (n->isInAPI()) { - QString msg1 = n->name(); - if (n->isFunction()) + for (const auto *node : qAsConst(children_)) { + if (node->isInAPI()) { + QString msg1 = node->name(); + if (node->isFunction()) msg1 += "()"; msg1 += tr(" is documented, but namespace %1 is not documented in any module.").arg(name()); QString msg2 = tr("Add /*! '\\%1 %2' ... */ or remove the qdoc comment marker (!) at that line number.").arg(COMMAND_NAMESPACE).arg(name()); - n->doc().location().warning(msg1, msg2); + node->doc().location().warning(msg1, msg2); } } } @@ -3590,8 +3588,8 @@ bool HeaderNode::docMustBeGenerated() const */ bool HeaderNode::hasDocumentedChildren() const { - foreach (Node *n, children_) { - if (n->isInAPI()) + for (const auto *node : qAsConst(children_)) { + if (node->isInAPI()) return true; } return false; @@ -3794,7 +3792,7 @@ Node::Access EnumNode::itemAccess(const QString &name) const */ QString EnumNode::itemValue(const QString &name) const { - foreach (const EnumItem &item, items_) { + for (const auto &item : qAsConst(items_)) { if (item.name() == name) return item.value(); } @@ -4297,8 +4295,8 @@ bool FunctionNode::hasActiveAssociatedProperty() const { if (associatedProperties_.isEmpty()) return false; - foreach (const Node *p, associatedProperties_) { - if (!p->isObsolete()) + for (const auto *property : qAsConst(associatedProperties_)) { + if (!property->isObsolete()) return true; } return false; diff --git a/src/qdoc/parameters.cpp b/src/qdoc/parameters.cpp index c723fe9cc..44178c9d9 100644 --- a/src/qdoc/parameters.cpp +++ b/src/qdoc/parameters.cpp @@ -456,7 +456,8 @@ QString Parameters::signature(bool includeValues) const QString Parameters::rawSignature(bool names, bool values) const { QString raw; - foreach (const Parameter ¶meter, parameters_) { + const auto params = parameters_; + for (const auto ¶meter : params) { raw += parameter.type(); if (names) raw += parameter.name(); @@ -508,7 +509,8 @@ void Parameters::set(const QString &signature) */ void Parameters::getNames(QSet<QString> &names) const { - foreach (const Parameter ¶meter, parameters_) { + const auto params = parameters_; + for (const auto ¶meter : params) { if (!parameter.name().isEmpty()) names.insert(parameter.name()); } diff --git a/src/qdoc/qdoc.pro b/src/qdoc/qdoc.pro index 47985f957..0f9159bc7 100644 --- a/src/qdoc/qdoc.pro +++ b/src/qdoc/qdoc.pro @@ -11,6 +11,8 @@ qtHaveModule(qmldevtools-private) { DEFINES += QT_NO_DECLARATIVE } +DEFINES += QT_NO_FOREACH + include($$OUT_PWD/qtqdoc-config.pri) LIBS += $$CLANG_LIBS diff --git a/src/qdoc/qdocdatabase.cpp b/src/qdoc/qdocdatabase.cpp index 2ad906bd6..311b19db7 100644 --- a/src/qdoc/qdocdatabase.cpp +++ b/src/qdoc/qdocdatabase.cpp @@ -169,7 +169,7 @@ void QDocForest::setPrimaryTree(const QString &t) If the search order array is empty, create the search order. If the search order array is not empty, do nothing. */ -void QDocForest::setSearchOrder(QStringList &t) +void QDocForest::setSearchOrder(const QStringList &t) { if (!searchOrder_.isEmpty()) return; @@ -187,7 +187,7 @@ void QDocForest::setSearchOrder(QStringList &t) forest_.remove(primaryName); QMap<QString, Tree *>::iterator i; - foreach (const QString &m, t) { + for (const QString &m : t) { if (primaryName != m) { i = forest_.find(m); if (i != forest_.end()) { @@ -326,8 +326,8 @@ const Node *QDocForest::findNodeForTarget(QStringList &targetPath, if (!targetPath.isEmpty()) target = targetPath.takeFirst(); - foreach (Tree *t, searchOrder()) { - const Node *n = t->findNodeForTarget(entityPath, target, relative, flags, genus, ref); + for (const auto *tree : searchOrder()) { + const Node *n = tree->findNodeForTarget(entityPath, target, relative, flags, genus, ref); if (n) return n; relative = nullptr; @@ -343,9 +343,9 @@ void QDocForest::printLinkCounts(const QString &project) { Location::null.report(QString("%1: Link Counts").arg(project)); QMultiMap<int, QString> m; - foreach (Tree *t, searchOrder()) { - if (t->linkCount() < 0) - m.insert(t->linkCount(), t->physicalModuleName()); + for (const auto *tree : searchOrder()) { + if (tree->linkCount() < 0) + m.insert(tree->linkCount(), tree->physicalModuleName()); } QString depends = "depends +="; QString module = project.toLower(); @@ -372,9 +372,9 @@ void QDocForest::printLinkCounts(const QString &project) QString QDocForest::getLinkCounts(QStringList &strings, QVector<int> &counts) { QMultiMap<int, QString> m; - foreach (Tree *t, searchOrder()) { - if (t->linkCount() < 0) - m.insert(t->linkCount(), t->physicalModuleName()); + for (const auto *tree : searchOrder()) { + if (tree->linkCount() < 0) + m.insert(tree->linkCount(), tree->physicalModuleName()); } QString depends = "depends +="; QString module = Generator::defaultModuleName().toLower(); @@ -405,8 +405,8 @@ const FunctionNode *QDocForest::findFunctionNode(const QStringList &path, const Node *relative, Node::Genus genus) { - foreach (Tree *t, searchOrder()) { - const FunctionNode *fn = t->findFunctionNode(path, parameters, relative, genus); + for (const auto *tree : searchOrder()) { + const FunctionNode *fn = tree->findFunctionNode(path, parameters, relative, genus); if (fn) return fn; relative = nullptr; @@ -1181,15 +1181,15 @@ void QDocDatabase::resolveNamespaces() t->root()->findAllNamespaces(namespaceMultimap); t = forest_.nextTree(); } - QList<QString> keys = namespaceMultimap.uniqueKeys(); - foreach (const QString &s, keys) { + const QList<QString> keys = namespaceMultimap.uniqueKeys(); + for (const QString &key : keys) { NamespaceNode *ns = nullptr; NamespaceNode *somewhere = nullptr; - NodeList namespaces = namespaceMultimap.values(s); - int count = namespaceMultimap.remove(s); + const NodeList namespaces = namespaceMultimap.values(key); + int count = namespaceMultimap.remove(key); if (count > 0) { - foreach (Node *n, namespaces) { - ns = static_cast<NamespaceNode *>(n); + for (auto *node : namespaces) { + ns = static_cast<NamespaceNode *>(node); if (ns->isDocumentedHere()) break; else if (ns->hadDoc()) @@ -1197,8 +1197,8 @@ void QDocDatabase::resolveNamespaces() ns = nullptr; } if (ns) { - foreach (Node *n, namespaces) { - NamespaceNode *NS = static_cast<NamespaceNode *>(n); + for (auto *node : namespaces) { + NamespaceNode *NS = static_cast<NamespaceNode *>(node); if (NS->hadDoc() && NS != ns) { ns->doc().location().warning(tr("Namespace %1 documented more than once") .arg(NS->name())); @@ -1207,14 +1207,14 @@ void QDocDatabase::resolveNamespaces() } } else if (somewhere == nullptr) { - foreach (Node *n, namespaces) { - NamespaceNode *NS = static_cast<NamespaceNode *>(n); + for (auto *node : namespaces) { + NamespaceNode *NS = static_cast<NamespaceNode *>(node); NS->reportDocumentedChildrenInUndocumentedNamespace(); } } if (somewhere) { - foreach (Node *n, namespaces) { - NamespaceNode *NS = static_cast<NamespaceNode *>(n); + for (auto *node : namespaces) { + NamespaceNode *NS = static_cast<NamespaceNode *>(node); if (NS != somewhere) NS->setDocNode(somewhere); } @@ -1229,11 +1229,11 @@ void QDocDatabase::resolveNamespaces() the namespace. */ if (ns && count > 1) { - foreach (Node *n, namespaces) { - NamespaceNode *NS = static_cast<NamespaceNode *>(n); - if (NS != ns) { - NodeList::ConstIterator c = NS->constBegin(); - while (c != NS->constEnd()) { + for (auto *node : namespaces) { + auto *nameSpaceNode = static_cast<NamespaceNode *>(node); + if (nameSpaceNode != ns) { + NodeList::ConstIterator c = nameSpaceNode->constBegin(); + while (c != nameSpaceNode->constEnd()) { Node *N = *c; if (N && N->isPublic() && !N->isInternal()) ns->includeChild(N); @@ -1265,10 +1265,10 @@ void QDocDatabase::resolveProxies() Tree *t = forest_.firstTree(); t = forest_.nextTree(); while (t) { - NodeList &proxies = t->proxies(); + const NodeList &proxies = t->proxies(); if (!proxies.isEmpty()) { - foreach (Node *n, proxies) { - ProxyNode *pn = static_cast<ProxyNode *>(n); + for (auto *node : proxies) { + ProxyNode *pn = static_cast<ProxyNode *>(node); if (pn->count() > 0) { Aggregate *aggregate = primaryTree()->findAggregate(pn->name()); if (aggregate != nullptr) @@ -1349,8 +1349,8 @@ const Node *QDocDatabase::findNodeForTarget(const QString &target, const Node *r else { QStringList path = target.split("::"); int flags = SearchBaseClasses | SearchEnumValues; - foreach (Tree *t, searchOrder()) { - const Node *n = t->findNode(path, relative, flags, Node::DontCare); + for (const auto *tree : searchOrder()) { + const Node *n = tree->findNode(path, relative, flags, Node::DontCare); if (n) return n; relative = nullptr; @@ -1372,19 +1372,19 @@ void QDocDatabase::generateTagFile(const QString &name, Generator *g) } /*! - Reads and parses the qdoc index files listed in \a t. + Reads and parses the qdoc index files listed in \a indexFiles. */ -void QDocDatabase::readIndexes(const QStringList &t) +void QDocDatabase::readIndexes(const QStringList &indexFiles) { - QStringList indexFiles; - foreach (const QString &f, t) { - QString fn = f.mid(f.lastIndexOf(QChar('/'))+1); + QStringList filesToRead; + for (const QString &file : indexFiles) { + QString fn = file.mid(file.lastIndexOf(QChar('/'))+1); if (!isLoaded(fn)) - indexFiles << f; + filesToRead << file; else - qDebug() << "This index file is already in memory:" << f; + qDebug() << "This index file is already in memory:" << file; } - QDocIndexFiles::qdocIndexFiles()->readIndexes(indexFiles); + QDocIndexFiles::qdocIndexFiles()->readIndexes(filesToRead); } /*! @@ -1416,7 +1416,8 @@ Node *QDocDatabase::findNodeInOpenNamespace(QStringList &path, bool (Node::*isMa return nullptr; Node *n = nullptr; if (!openNamespaces_.isEmpty()) { - foreach (const QString &t, openNamespaces_) { + const auto &openNamespaces = openNamespaces_; + for (const QString &t : openNamespaces) { QStringList p; if (t != path[0]) p = t.split("::") + path; @@ -1441,8 +1442,8 @@ void QDocDatabase::mergeCollections(Node::NodeType type, CNMap &cnm, const Node { cnm.clear(); CNMultiMap cnmm; - foreach (Tree *t, searchOrder()) { - CNMap *m = t->getCollectionMap(type); + for (auto *tree : searchOrder()) { + CNMap *m = tree->getCollectionMap(type); if (m && !m->isEmpty()) { CNMap::const_iterator i = m->cbegin(); while (i != m->cend()) { @@ -1455,28 +1456,28 @@ void QDocDatabase::mergeCollections(Node::NodeType type, CNMap &cnm, const Node if (cnmm.isEmpty()) return; QRegExp singleDigit("\\b([0-9])\\b"); - QStringList keys = cnmm.uniqueKeys(); - foreach (const QString &key, keys) { - QList<CollectionNode *> values = cnmm.values(key); + const QStringList keys = cnmm.uniqueKeys(); + for (const auto &key : keys) { + const QList<CollectionNode *> values = cnmm.values(key); CollectionNode *n = nullptr; - foreach (CollectionNode *v, values) { - if (v && v->wasSeen() && (v != relative)) { - n = v; + for (auto *value : values) { + if (value && value->wasSeen() && value != relative) { + n = value; break; } } if (n) { if (values.size() > 1) { - foreach (CollectionNode *v, values) { - if (v != n) { + for (CollectionNode *value : values) { + if (value != n) { // Allow multiple (major) versions of QML/JS modules if ((n->isQmlModule() || n->isJsModule()) && - n->logicalModuleIdentifier() != v->logicalModuleIdentifier()) { - if (v->wasSeen() && v != relative && !v->members().isEmpty()) - cnm.insert(v->fullTitle().toLower(), v); + n->logicalModuleIdentifier() != value->logicalModuleIdentifier()) { + if (value->wasSeen() && value != relative && !value->members().isEmpty()) + cnm.insert(value->fullTitle().toLower(), value); continue; } - foreach (Node *t, v->members()) + for (Node *t : value->members()) n->addMember(t); } } @@ -1503,14 +1504,14 @@ void QDocDatabase::mergeCollections(Node::NodeType type, CNMap &cnm, const Node */ void QDocDatabase::mergeCollections(CollectionNode *c) { - foreach (Tree *t, searchOrder()) { - CollectionNode *cn = t->getCollection(c->name(), c->nodeType()); + for (auto *tree : searchOrder()) { + CollectionNode *cn = tree->getCollection(c->name(), c->nodeType()); if (cn && cn != c) { if ((cn->isQmlModule() || cn->isJsModule()) && cn->logicalModuleIdentifier() != c->logicalModuleIdentifier()) continue; - foreach (Node *n, cn->members()) - c->addMember(n); + for (auto *node : cn->members()) + c->addMember(node); } } } diff --git a/src/qdoc/qdocdatabase.h b/src/qdoc/qdocdatabase.h index 4093dbac5..28b1cea83 100644 --- a/src/qdoc/qdocdatabase.h +++ b/src/qdoc/qdocdatabase.h @@ -74,10 +74,10 @@ class QDocForest bool done() { return (currentIndex_ >= searchOrder().size()); } const QVector<Tree *> &searchOrder(); const QVector<Tree *> &indexSearchOrder(); - void setSearchOrder(QStringList &t); + void setSearchOrder(const QStringList &t); bool isLoaded(const QString &fn) { - foreach (Tree *t, searchOrder()) { - if (fn == t->indexFileName()) + for (const auto *tree : searchOrder()) { + if (fn == tree->indexFileName()) return true; } return false; @@ -87,8 +87,8 @@ class QDocForest const Node *relative, int findFlags, Node::Genus genus) { - foreach (Tree *t, searchOrder()) { - const Node *n = t->findNode(path, relative, findFlags, genus); + for (const auto *tree : searchOrder()) { + const Node *n = tree->findNode(path, relative, findFlags, genus); if (n) return n; relative = nullptr; @@ -97,8 +97,8 @@ class QDocForest } Node *findNodeByNameAndType(const QStringList &path, bool (Node::*isMatch) () const) { - foreach (Tree *t, searchOrder()) { - Node *n = t->findNodeByNameAndType(path, isMatch); + for (const auto *tree : searchOrder()) { + Node *n = tree->findNodeByNameAndType(path, isMatch); if (n) return n; } @@ -106,8 +106,8 @@ class QDocForest } ClassNode *findClassNode(const QStringList &path) { - foreach (Tree *t, searchOrder()) { - ClassNode *n = t->findClassNode(path); + for (const auto *tree : searchOrder()) { + ClassNode *n = tree->findClassNode(path); if (n) return n; } @@ -115,8 +115,8 @@ class QDocForest } Node *findNodeForInclude(const QStringList &path) { - foreach (Tree *t, searchOrder()) { - Node *n = t->findNodeForInclude(path); + for (const auto *tree : searchOrder()) { + Node *n = tree->findNodeForInclude(path); if (n) return n; } @@ -137,8 +137,8 @@ class QDocForest int flags = SearchBaseClasses | SearchEnumValues | TypesOnly; if (relative && genus == Node::DontCare && relative->genus() != Node::DOC) genus = relative->genus(); - foreach (Tree *t, searchOrder()) { - const Node *n = t->findNode(path, relative, flags, genus); + for (const auto *tree : searchOrder()) { + const Node *n = tree->findNode(path, relative, flags, genus); if (n) return n; relative = nullptr; @@ -148,8 +148,8 @@ class QDocForest const PageNode *findPageNodeByTitle(const QString &title) { - foreach (Tree *t, searchOrder()) { - const PageNode *n = t->findPageNodeByTitle(title); + for (const auto *tree : searchOrder()) { + const PageNode *n = tree->findPageNodeByTitle(title); if (n) return n; } @@ -158,8 +158,8 @@ class QDocForest const CollectionNode *getCollectionNode(const QString &name, Node::NodeType type) { - foreach (Tree *t, searchOrder()) { - const CollectionNode *cn = t->getCollection(name, type); + for (auto *tree : searchOrder()) { + const CollectionNode *cn = tree->getCollection(name, type); if (cn) return cn; } @@ -168,8 +168,8 @@ class QDocForest QmlTypeNode *lookupQmlType(const QString &name) { - foreach (Tree *t, searchOrder()) { - QmlTypeNode *qcn = t->lookupQmlType(name); + for (const auto *tree : searchOrder()) { + QmlTypeNode *qcn = tree->lookupQmlType(name); if (qcn) return qcn; } @@ -178,8 +178,8 @@ class QDocForest Aggregate *lookupQmlBasicType(const QString &name) { - foreach (Tree *t, searchOrder()) { - Aggregate *a = t->lookupQmlBasicType(name); + for (const auto *tree : searchOrder()) { + Aggregate *a = tree->lookupQmlBasicType(name); if (a) return a; } @@ -188,8 +188,8 @@ class QDocForest void clearSearchOrder() { searchOrder_.clear(); } void clearLinkCounts() { - foreach (Tree *t, searchOrder()) - t->clearLinkCount(); + for (auto *tree : searchOrder()) + tree->clearLinkCount(); } void printLinkCounts(const QString &project); QString getLinkCounts(QStringList &strings, QVector<int> &counts); diff --git a/src/qdoc/qdocindexfiles.cpp b/src/qdoc/qdocindexfiles.cpp index 2848eaba7..9ea7d9f86 100644 --- a/src/qdoc/qdocindexfiles.cpp +++ b/src/qdoc/qdocindexfiles.cpp @@ -108,10 +108,10 @@ void QDocIndexFiles::destroyQDocIndexFiles() */ void QDocIndexFiles::readIndexes(const QStringList &indexFiles) { - foreach (const QString &indexFile, indexFiles) { - QString msg = "Loading index file: " + indexFile; + for (const QString &file : indexFiles) { + QString msg = "Loading index file: " + file; Location::logToStdErr(msg); - readIndexFile(indexFile); + readIndexFile(file); } } @@ -608,8 +608,8 @@ void QDocIndexFiles::readIndexSection(QXmlStreamReader& reader, QString groupsAttr = attributes.value(QLatin1String("groups")).toString(); if (!groupsAttr.isEmpty()) { - QStringList groupNames = groupsAttr.split(QLatin1Char(',')); - foreach (const QString &name, groupNames) { + const QStringList groupNames = groupsAttr.split(QLatin1Char(',')); + for (const auto &name : groupNames) { qdb_->addToGroup(name, node); } } @@ -691,9 +691,9 @@ void QDocIndexFiles::insertTarget(TargetRec::TargetType type, void QDocIndexFiles::resolveIndex() { QPair<ClassNode *, QString> pair; - foreach (pair, basesList_) { - QStringList bases = pair.second.split(QLatin1Char(',')); - foreach (const QString &base, bases) { + for (const auto &pair : qAsConst(basesList_)) { + const QStringList bases = pair.second.split(QLatin1Char(',')); + for (const auto &base : bases) { QStringList basePath = base.split(QString("::")); Node *n = qdb_->findClassNode(basePath); if (n) @@ -950,9 +950,9 @@ bool QDocIndexFiles::generateIndexSection(QXmlStreamWriter &writer, Node *node, { // Classes contain information about their base classes. const ClassNode *classNode = static_cast<const ClassNode *>(node); - QList<RelatedClass> bases = classNode->baseClasses(); + const QList<RelatedClass> bases = classNode->baseClasses(); QSet<QString> baseStrings; - foreach (const RelatedClass &related, bases) { + for (const auto &related : bases) { ClassNode *n = related.node_; if (n) baseStrings.insert(n->fullName()); @@ -1067,7 +1067,8 @@ bool QDocIndexFiles::generateIndexSection(QXmlStreamWriter &writer, Node *node, */ if (!cn->members().isEmpty()) { QStringList names; - foreach (const Node *member, cn->members()) + const auto &members = cn->members(); + for (const Node *member : members) names.append(member->name()); writer.writeAttribute("members", names.join(QLatin1Char(','))); } @@ -1092,7 +1093,8 @@ bool QDocIndexFiles::generateIndexSection(QXmlStreamWriter &writer, Node *node, */ if (!cn->members().isEmpty()) { QStringList names; - foreach (const Node *member, cn->members()) + const auto &members = cn->members(); + for (const Node *member : members) names.append(member->name()); writer.writeAttribute("members", names.join(QLatin1Char(','))); } @@ -1118,7 +1120,8 @@ bool QDocIndexFiles::generateIndexSection(QXmlStreamWriter &writer, Node *node, */ if (!cn->members().isEmpty()) { QStringList names; - foreach (const Node *member, cn->members()) + const auto &members = cn->members(); + for (const Node *member : members) names.append(member->name()); writer.writeAttribute("members", names.join(QLatin1Char(','))); } @@ -1143,7 +1146,8 @@ bool QDocIndexFiles::generateIndexSection(QXmlStreamWriter &writer, Node *node, writer.writeAttribute("type", propertyNode->dataType()); if (!brief.isEmpty()) writer.writeAttribute("brief", brief); - foreach (const Node *fnNode, propertyNode->getters()) { + const auto &getters = propertyNode->getters(); + for (const auto *fnNode : getters) { if (fnNode) { const FunctionNode *functionNode = static_cast<const FunctionNode *>(fnNode); writer.writeStartElement("getter"); @@ -1151,7 +1155,8 @@ bool QDocIndexFiles::generateIndexSection(QXmlStreamWriter &writer, Node *node, writer.writeEndElement(); // getter } } - foreach (const Node *fnNode, propertyNode->setters()) { + const auto &setters = propertyNode->setters(); + for (const auto *fnNode : setters) { if (fnNode) { const FunctionNode *functionNode = static_cast<const FunctionNode *>(fnNode); writer.writeStartElement("setter"); @@ -1159,7 +1164,8 @@ bool QDocIndexFiles::generateIndexSection(QXmlStreamWriter &writer, Node *node, writer.writeEndElement(); // setter } } - foreach (const Node *fnNode, propertyNode->resetters()) { + const auto &resetters = propertyNode->resetters(); + for (const auto *fnNode : resetters) { if (fnNode) { const FunctionNode *functionNode = static_cast<const FunctionNode *>(fnNode); writer.writeStartElement("resetter"); @@ -1167,7 +1173,8 @@ bool QDocIndexFiles::generateIndexSection(QXmlStreamWriter &writer, Node *node, writer.writeEndElement(); // resetter } } - foreach (const Node *fnNode, propertyNode->notifiers()) { + const auto ¬ifiers = propertyNode->notifiers(); + for (const auto *fnNode : notifiers) { if (fnNode) { const FunctionNode *functionNode = static_cast<const FunctionNode *>(fnNode); writer.writeStartElement("notifier"); @@ -1191,7 +1198,8 @@ bool QDocIndexFiles::generateIndexSection(QXmlStreamWriter &writer, Node *node, const EnumNode *enumNode = static_cast<const EnumNode *>(node); if (enumNode->flagsType()) writer.writeAttribute("typedef",enumNode->flagsType()->fullDocumentName()); - foreach (const EnumItem &item, enumNode->items()) { + const auto &items = enumNode->items(); + for (const auto &item : items) { writer.writeStartElement("value"); writer.writeAttribute("name", item.name()); writer.writeAttribute("value", item.value()); @@ -1227,7 +1235,8 @@ bool QDocIndexFiles::generateIndexSection(QXmlStreamWriter &writer, Node *node, bool external = false; if (node->isExternalPage()) external = true; - foreach (const Atom *target, node->doc().targets()) { + const auto &targets = node->doc().targets(); + for (const Atom *target : targets) { QString title = target->string(); QString name = Doc::canonicalTitle(title); writer.writeStartElement("target"); @@ -1241,7 +1250,8 @@ bool QDocIndexFiles::generateIndexSection(QXmlStreamWriter &writer, Node *node, } } if (node->doc().hasKeywords()) { - foreach (const Atom *keyword, node->doc().keywords()) { + const auto &keywords = node->doc().keywords(); + for (const Atom *keyword : keywords) { QString title = keyword->string(); QString name = Doc::canonicalTitle(title); writer.writeStartElement("keyword"); @@ -1277,7 +1287,8 @@ bool QDocIndexFiles::generateIndexSection(QXmlStreamWriter &writer, Node *node, // files/images, as the generator produces them separately if (node->isExample() && gen_->format() != QLatin1String("WebXML")) { const ExampleNode *en = static_cast<const ExampleNode *>(node); - foreach (const QString &file, en->files()) { + const auto &files = en->files(); + for (const QString &file : files) { writer.writeStartElement("page"); writer.writeAttribute("name", file); QString href = gen_->linkForExampleFile(file, en); @@ -1289,7 +1300,8 @@ bool QDocIndexFiles::generateIndexSection(QXmlStreamWriter &writer, Node *node, writer.writeAttribute("subtitle", file); writer.writeEndElement(); // page } - foreach (const QString &file, en->images()) { + const auto &images = en->images(); + for (const QString &file : images) { writer.writeStartElement("page"); writer.writeAttribute("name", file); QString href = gen_->linkForExampleFile(file, en); @@ -1370,8 +1382,8 @@ void QDocIndexFiles::generateFunctionSection(QXmlStreamWriter &writer, FunctionN writer.writeAttribute("refness", QString::number(2)); if (fn->hasAssociatedProperties()) { QStringList associatedProperties; - foreach (Node *n, fn->associatedProperties()) { - associatedProperties << n->name(); + for (const auto *node : qAsConst(fn->associatedProperties())) { + associatedProperties << node->name(); } associatedProperties.sort(); writer.writeAttribute("associated-property", associatedProperties.join(QLatin1Char(','))); @@ -1464,8 +1476,9 @@ void QDocIndexFiles::generateIndexSections(QXmlStreamWriter &writer, Node *node, Aggregate *aggregate = static_cast<Aggregate *>(node); // First write the function children, then write the nonfunction children. generateFunctionSections(writer, aggregate); - foreach (Node *n, aggregate->nonfunctionList()) - generateIndexSections(writer, n, post); + const auto &nonFunctionList = aggregate->nonfunctionList(); + for (auto *node : nonFunctionList) + generateIndexSections(writer, node, post); } if (node == root_) { diff --git a/src/qdoc/qdoctagfiles.cpp b/src/qdoc/qdoctagfiles.cpp index 41d485444..bdf001469 100644 --- a/src/qdoc/qdoctagfiles.cpp +++ b/src/qdoc/qdoctagfiles.cpp @@ -96,7 +96,8 @@ void QDocTagFiles::destroyQDocTagFiles() */ void QDocTagFiles::generateTagFileCompounds(QXmlStreamWriter &writer, const Aggregate *parent) { - foreach (const Node *node, const_cast<Aggregate *>(parent)->nonfunctionList()) { + const auto &nonFunctionList = const_cast<Aggregate *>(parent)->nonfunctionList(); + for (const auto *node : nonFunctionList) { if (!node->url().isEmpty() || node->isPrivate()) continue; @@ -137,8 +138,8 @@ void QDocTagFiles::generateTagFileCompounds(QXmlStreamWriter &writer, const Aggr // Classes contain information about their base classes. const ClassNode *classNode = static_cast<const ClassNode *>(node); - QList<RelatedClass> bases = classNode->baseClasses(); - foreach (const RelatedClass& related, bases) { + const QList<RelatedClass> bases = classNode->baseClasses(); + for (const auto &related : bases) { ClassNode *n = related.node_; if (n) writer.writeTextElement("base", n->name()); @@ -170,7 +171,8 @@ void QDocTagFiles::generateTagFileCompounds(QXmlStreamWriter &writer, const Aggr */ void QDocTagFiles::generateTagFileMembers(QXmlStreamWriter &writer, const Aggregate *parent) { - foreach (const Node *node, parent->childNodes()) { + const auto &childNodes = parent->childNodes(); + for (const auto *node : childNodes) { if (!node->url().isEmpty()) continue; diff --git a/src/qdoc/qmlcodeparser.cpp b/src/qdoc/qmlcodeparser.cpp index 8b0b4dcaa..1b8688f00 100644 --- a/src/qdoc/qmlcodeparser.cpp +++ b/src/qdoc/qmlcodeparser.cpp @@ -147,7 +147,8 @@ void QmlCodeParser::parseSourceFile(const Location &location, const QString &fil << "The output is incomplete."; } } - foreach (const QQmlJS::DiagnosticMessage &msg, parser->diagnosticMessages()) { + const auto &messages = parser->diagnosticMessages(); + for (const auto &msg : messages) { qDebug().nospace() << qPrintable(filePath) << ':' #if Q_QML_PRIVATE_API_VERSION < 5 << msg.loc.startLine << ": QML syntax error at col " diff --git a/src/qdoc/qmlmarkupvisitor.cpp b/src/qdoc/qmlmarkupvisitor.cpp index 37a23c072..e99bf5fc3 100644 --- a/src/qdoc/qmlmarkupvisitor.cpp +++ b/src/qdoc/qmlmarkupvisitor.cpp @@ -192,7 +192,7 @@ void QmlMarkupVisitor::addMarkedUpToken( return; output += QString(QLatin1String("<@%1")).arg(tagName); - foreach (const QString &key, attributes) + for (const auto &key : attributes) output += QString(QLatin1String(" %1=\"%2\"")).arg(key).arg(attributes[key]); output += QString(QLatin1String(">%2</@%3>")).arg(protect(sourceText(location)), tagName); cursor += location.length; diff --git a/src/qdoc/tokenizer.cpp b/src/qdoc/tokenizer.cpp index ddfe61002..45c33fa7c 100644 --- a/src/qdoc/tokenizer.cpp +++ b/src/qdoc/tokenizer.cpp @@ -518,17 +518,18 @@ void Tokenizer::initialize(const Config &config) ignoredTokensAndDirectives = new QHash<QByteArray, bool>; - QStringList tokens = config.getStringList(LANGUAGE_CPP + Config::dot + CONFIG_IGNORETOKENS); - foreach (const QString &t, tokens) { - const QByteArray tb = t.toLatin1(); + const QStringList tokens = + config.getStringList(LANGUAGE_CPP + Config::dot + CONFIG_IGNORETOKENS); + for (const auto &token : tokens) { + const QByteArray tb = token.toLatin1(); ignoredTokensAndDirectives->insert(tb, false); insertKwordIntoHash(tb.data(), -1); } - QStringList directives = config.getStringList(LANGUAGE_CPP + Config::dot + const QStringList directives = config.getStringList(LANGUAGE_CPP + Config::dot + CONFIG_IGNOREDIRECTIVES); - foreach (const QString &d, directives) { - const QByteArray db = d.toLatin1(); + for (const auto &directive : directives) { + const QByteArray db = directive.toLatin1(); ignoredTokensAndDirectives->insert(db, true); insertKwordIntoHash(db.data(), -1); } diff --git a/src/qdoc/tree.cpp b/src/qdoc/tree.cpp index d29d41503..1ae07c52b 100644 --- a/src/qdoc/tree.cpp +++ b/src/qdoc/tree.cpp @@ -112,8 +112,8 @@ Tree::~Tree() while (i != targetListMap_->end()) { TargetList *tlist = i.value(); if (tlist) { - foreach (TargetLoc *tloc, *tlist) - delete tloc; + for (auto *location : qAsConst(*tlist)) + delete location; } delete tlist; ++i; @@ -364,7 +364,7 @@ void Tree::resolveCppToQmlLinks() { const NodeList &children = root_.childNodes(); - foreach (Node *child, children) { + for (auto *child : children) { if (child->isQmlType() || child->isJsType()) { QmlTypeNode *qcn = static_cast<QmlTypeNode *>(child); ClassNode *cn = const_cast<ClassNode *>(qcn->classNode()); @@ -381,7 +381,7 @@ void Tree::resolveCppToQmlLinks() void Tree::resolveUsingClauses() { const NodeList &children = root_.childNodes(); - foreach (Node *child, children) { + for (auto *child : children) { if (child->isClassNode()) { ClassNode *cn = static_cast<ClassNode *>(child); QList<UsingClause> &usingClauses = cn->usingClauses(); @@ -427,10 +427,11 @@ void Tree::removePrivateAndInternalBases(NamespaceNode *rootNode) ClassList Tree::allBaseClasses(const ClassNode *classNode) const { ClassList result; - foreach (const RelatedClass &r, classNode->baseClasses()) { - if (r.node_ != nullptr) { - result += r.node_; - result += allBaseClasses(r.node_); + const auto &baseClasses = classNode->baseClasses(); + for (const auto &relatedClass : baseClasses) { + if (relatedClass.node_ != nullptr) { + result += relatedClass.node_; + result += allBaseClasses(relatedClass.node_); } } return result; @@ -477,19 +478,19 @@ Node *Tree::findNodeRecursive(const QStringList &path, Aggregate *current = static_cast<Aggregate *>(node); const NodeList &children = current->childNodes(); const QString &name = path.at(pathIndex); - foreach (Node *n, children) { - if (n == nullptr) + for (auto *node : children) { + if (node == nullptr) continue; - if (n->name() == name) { + if (node->name() == name) { if (pathIndex+1 >= path.size()) { - if ((n->*(isMatch))()) - return n; + if ((node->*(isMatch))()) + return node; continue; } else { // Search the children of n for the next name in the path. - n = findNodeRecursive(path, pathIndex+1, n, isMatch); - if (n != nullptr) - return n; + node = findNodeRecursive(path, pathIndex+1, node, isMatch); + if (node != nullptr) + return node; } } } @@ -633,10 +634,10 @@ const Node *Tree::matchPathAndTarget(const QStringList &path, if (node->isAggregate()) { NodeVector nodes; static_cast<const Aggregate *>(node)->findChildren(name, nodes); - foreach (const Node *n, nodes) { - if (genus != Node::DontCare && n->genus() != genus) + for (const auto *node : qAsConst(nodes)) { + if (genus != Node::DontCare && node->genus() != genus) continue; - const Node *t = matchPathAndTarget(path, idx + 1, target, n, flags, genus, ref); + const Node *t = matchPathAndTarget(path, idx + 1, target, node, flags, genus, ref); if (t && !t->isPrivate()) return t; } @@ -650,8 +651,8 @@ const Node *Tree::matchPathAndTarget(const QStringList &path, } if (((genus == Node::CPP) || (genus == Node::DontCare)) && node->isClassNode() && (flags & SearchBaseClasses)) { - ClassList bases = allBaseClasses(static_cast<const ClassNode *>(node)); - foreach (const ClassNode *base, bases) { + const ClassList bases = allBaseClasses(static_cast<const ClassNode *>(node)); + for (const auto *base : bases) { const Node *t = matchPathAndTarget(path, idx, target, base, flags, genus, ref); if (t && ! t->isPrivate()) return t; @@ -720,8 +721,8 @@ const Node *Tree::findNode(const QStringList &path, } if ((next == nullptr) && ((genus == Node::CPP) || (genus == Node::DontCare)) && node->isClassNode() && (flags & SearchBaseClasses)) { - ClassList bases = allBaseClasses(static_cast<const ClassNode *>(node)); - foreach (const ClassNode *base, bases) { + const ClassList bases = allBaseClasses(static_cast<const ClassNode *>(node)); + for (const auto *base : bases) { next = base->findChildNode(path.at(i), genus, tmpFlags); if ((next == nullptr) && (flags & SearchEnumValues) && i == path.size() - 1) next = base->findEnumNodeForValue(path.at(i)); @@ -788,7 +789,7 @@ void Tree::insertTarget(const QString &name, */ void Tree::resolveTargets(Aggregate *root) { - foreach (Node *child, root->childNodes()) { + for (auto *child : root->childNodes()) { if (child->isTextPageNode()) { PageNode *node = static_cast<PageNode *>(child); QString key = node->title(); @@ -1284,8 +1285,8 @@ const FunctionNode *Tree::findFunctionNode(const QStringList &path, next = aggregate->findChildNode(path.at(i), genus); if ((next == nullptr) && aggregate->isClassNode()) { - ClassList bases = allBaseClasses(static_cast<const ClassNode *>(aggregate)); - foreach (ClassNode *base, bases) { + const ClassList bases = allBaseClasses(static_cast<const ClassNode *>(aggregate)); + for (auto *base : bases) { if (i == path.size() - 1) next = base->findFunctionChild(path.at(i), parameters); else |