summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/qdoc/atom.cpp14
-rw-r--r--src/qdoc/codemarker.cpp9
-rw-r--r--src/qdoc/codeparser.cpp22
-rw-r--r--src/qdoc/cppcodemarker.cpp7
-rw-r--r--src/qdoc/cppcodeparser.cpp10
-rw-r--r--src/qdoc/doc.cpp8
-rw-r--r--src/qdoc/generator.cpp27
-rw-r--r--src/qdoc/helpprojectwriter.cpp49
-rw-r--r--src/qdoc/htmlgenerator.cpp74
-rw-r--r--src/qdoc/main.cpp4
-rw-r--r--src/qdoc/node.cpp186
-rw-r--r--src/qdoc/parameters.cpp6
-rw-r--r--src/qdoc/qdoc.pro2
-rw-r--r--src/qdoc/qdocdatabase.cpp123
-rw-r--r--src/qdoc/qdocdatabase.h46
-rw-r--r--src/qdoc/qdocindexfiles.cpp65
-rw-r--r--src/qdoc/qdoctagfiles.cpp10
-rw-r--r--src/qdoc/qmlcodeparser.cpp3
-rw-r--r--src/qdoc/qmlmarkupvisitor.cpp2
-rw-r--r--src/qdoc/tokenizer.cpp13
-rw-r--r--src/qdoc/tree.cpp53
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 &param : 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 &parameter, parameters_) {
+ const auto params = parameters_;
+ for (const auto &parameter : 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 &parameter, parameters_) {
+ const auto params = parameters_;
+ for (const auto &parameter : 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 &notifiers = 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