summaryrefslogtreecommitdiff
path: root/src/qdoc/codemarker.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/qdoc/codemarker.cpp')
-rw-r--r--src/qdoc/codemarker.cpp151
1 files changed, 71 insertions, 80 deletions
diff --git a/src/qdoc/codemarker.cpp b/src/qdoc/codemarker.cpp
index 7c8843c65..070218b6e 100644
--- a/src/qdoc/codemarker.cpp
+++ b/src/qdoc/codemarker.cpp
@@ -39,7 +39,7 @@
QT_BEGIN_NAMESPACE
QString CodeMarker::defaultLang;
-QList<CodeMarker *> CodeMarker::markers;
+QVector<CodeMarker *> CodeMarker::markers;
/*!
When a code marker constructs itself, it puts itself into
@@ -66,9 +66,7 @@ CodeMarker::~CodeMarker()
A code market performs no initialization by default. Marker-specific
initialization is performed in subclasses.
*/
-void CodeMarker::initializeMarker(const Config &) // config
-{
-}
+void CodeMarker::initializeMarker() {}
/*!
Terminating a code marker is trivial.
@@ -82,14 +80,11 @@ void CodeMarker::terminateMarker()
All the code markers in the static list are initialized
here, after the qdoc configuration file has been loaded.
*/
-void CodeMarker::initialize(const Config &config)
+void CodeMarker::initialize()
{
- defaultLang = config.getString(CONFIG_LANGUAGE);
- QList<CodeMarker *>::ConstIterator m = markers.constBegin();
- while (m != markers.constEnd()) {
- (*m)->initializeMarker(config);
- ++m;
- }
+ defaultLang = Config::instance().getString(CONFIG_LANGUAGE);
+ for (const auto &marker : qAsConst(markers))
+ marker->initializeMarker();
}
/*!
@@ -97,11 +92,8 @@ void CodeMarker::initialize(const Config &config)
*/
void CodeMarker::terminate()
{
- QList<CodeMarker *>::ConstIterator m = markers.constBegin();
- while (m != markers.constEnd()) {
- (*m)->terminateMarker();
- ++m;
- }
+ for (const auto &marker : qAsConst(markers))
+ marker->terminateMarker();
}
CodeMarker *CodeMarker::markerForCode(const QString &code)
@@ -110,12 +102,11 @@ CodeMarker *CodeMarker::markerForCode(const QString &code)
if (defaultMarker != nullptr && defaultMarker->recognizeCode(code))
return defaultMarker;
- QList<CodeMarker *>::ConstIterator m = markers.constBegin();
- while (m != markers.constEnd()) {
- if ((*m)->recognizeCode(code))
- return *m;
- ++m;
+ for (const auto &marker : qAsConst(markers)) {
+ if (marker->recognizeCode(code))
+ return marker;
}
+
return defaultMarker;
}
@@ -127,11 +118,9 @@ CodeMarker *CodeMarker::markerForFileName(const QString &fileName)
QString ext = fileName.mid(dot + 1);
if (defaultMarker != nullptr && defaultMarker->recognizeExtension(ext))
return defaultMarker;
- QList<CodeMarker *>::ConstIterator m = markers.constBegin();
- while (m != markers.constEnd()) {
- if ((*m)->recognizeExtension(ext))
- return *m;
- ++m;
+ for (const auto &marker : qAsConst(markers)) {
+ if (marker->recognizeExtension(ext))
+ return marker;
}
--dot;
}
@@ -140,11 +129,9 @@ CodeMarker *CodeMarker::markerForFileName(const QString &fileName)
CodeMarker *CodeMarker::markerForLanguage(const QString &lang)
{
- QList<CodeMarker *>::ConstIterator m = markers.constBegin();
- while (m != markers.constEnd()) {
- if ((*m)->recognizeLanguage(lang))
- return *m;
- ++m;
+ for (const auto &marker : qAsConst(markers)) {
+ if (marker->recognizeLanguage(lang))
+ return marker;
}
return nullptr;
}
@@ -163,15 +150,14 @@ QString CodeMarker::stringForNode(const Node *node)
{
if (sizeof(const Node *) == sizeof(ulong)) {
return QString::number(reinterpret_cast<quintptr>(node));
- }
- else {
+ } else {
return QString::number(reinterpret_cast<qulonglong>(node));
}
}
-static const QString samp = QLatin1String("&amp;");
-static const QString slt = QLatin1String("&lt;");
-static const QString sgt = QLatin1String("&gt;");
+static const QString samp = QLatin1String("&amp;");
+static const QString slt = QLatin1String("&lt;");
+static const QString sgt = QLatin1String("&gt;");
static const QString squot = QLatin1String("&quot;");
QString CodeMarker::protect(const QString &str)
@@ -182,11 +168,20 @@ QString CodeMarker::protect(const QString &str)
const QChar *data = str.constData();
for (int i = 0; i != n; ++i) {
switch (data[i].unicode()) {
- case '&': marked += samp; break;
- case '<': marked += slt; break;
- case '>': marked += sgt; break;
- case '"': marked += squot; break;
- default : marked += data[i];
+ case '&':
+ marked += samp;
+ break;
+ case '<':
+ marked += slt;
+ break;
+ case '>':
+ marked += sgt;
+ break;
+ case '"':
+ marked += squot;
+ break;
+ default:
+ marked += data[i];
}
}
return marked;
@@ -199,11 +194,20 @@ void CodeMarker::appendProtectedString(QString *output, const QStringRef &str)
const QChar *data = str.constData();
for (int i = 0; i != n; ++i) {
switch (data[i].unicode()) {
- case '&': *output += samp; break;
- case '<': *output += slt; break;
- case '>': *output += sgt; break;
- case '"': *output += squot; break;
- default : *output += data[i];
+ case '&':
+ *output += samp;
+ break;
+ case '<':
+ *output += slt;
+ break;
+ case '>':
+ *output += sgt;
+ break;
+ case '"':
+ *output += squot;
+ break;
+ default:
+ *output += data[i];
}
}
}
@@ -219,12 +223,10 @@ QString CodeMarker::typified(const QString &string, bool trailingSpace)
ch = string.at(i);
QChar lower = ch.toLower();
- if ((lower >= QLatin1Char('a') && lower <= QLatin1Char('z'))
- || ch.digitValue() >= 0 || ch == QLatin1Char('_')
- || ch == QLatin1Char(':')) {
+ if ((lower >= QLatin1Char('a') && lower <= QLatin1Char('z')) || ch.digitValue() >= 0
+ || ch == QLatin1Char('_') || ch == QLatin1Char(':')) {
pendingWord += ch;
- }
- else {
+ } else {
if (!pendingWord.isEmpty()) {
bool isProbablyType = (pendingWord != QLatin1String("const"));
if (isProbablyType)
@@ -253,9 +255,8 @@ QString CodeMarker::typified(const QString &string, bool trailingSpace)
}
}
if (trailingSpace && string.size()) {
- if (!string.endsWith(QLatin1Char('*'))
- && !string.endsWith(QLatin1Char('&')))
- result += QLatin1Char(' ');
+ if (!string.endsWith(QLatin1Char('*')) && !string.endsWith(QLatin1Char('&')))
+ result += QLatin1Char(' ');
}
return result;
}
@@ -306,8 +307,8 @@ QString CodeMarker::taggedNode(const Node *node)
tag = QLatin1String("@unknown");
break;
}
- return (QLatin1Char('<') + tag + QLatin1Char('>') + protect(name)
- + QLatin1String("</") + tag + QLatin1Char('>'));
+ return (QLatin1Char('<') + tag + QLatin1Char('>') + protect(name) + QLatin1String("</") + tag
+ + QLatin1Char('>'));
}
QString CodeMarker::taggedQmlNode(const Node *node)
@@ -337,14 +338,14 @@ QString CodeMarker::taggedQmlNode(const Node *node)
} else {
tag = QLatin1String("@unknown");
}
- return QLatin1Char('<') + tag + QLatin1Char('>') + protect(node->name())
- + QLatin1String("</") + tag + QLatin1Char('>');
+ return QLatin1Char('<') + tag + QLatin1Char('>') + protect(node->name()) + QLatin1String("</")
+ + tag + QLatin1Char('>');
}
QString CodeMarker::linkTag(const Node *node, const QString &body)
{
- return QLatin1String("<@link node=\"") + stringForNode(node)
- + QLatin1String("\">") + body + QLatin1String("</@link>");
+ return QLatin1String("<@link node=\"") + stringForNode(node) + QLatin1String("\">") + body
+ + QLatin1String("</@link>");
}
static QString encode(const QString &string)
@@ -356,32 +357,27 @@ QStringList CodeMarker::macRefsForNode(Node *node)
{
QString result = QLatin1String("cpp/");
switch (node->nodeType()) {
- case Node::Class:
- {
+ case Node::Class: {
const ClassNode *classe = static_cast<const ClassNode *>(node);
{
result += QLatin1String("cl/");
}
result += macName(classe); // ### Maybe plainName?
- }
- break;
- case Node::Enum:
- {
+ } break;
+ case Node::Enum: {
QStringList stringList;
stringList << encode(result + QLatin1String("tag/") + macName(node));
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(), name));
+ stringList << encode(result + QLatin1String("econst/") + macName(node->parent(), name));
}
return stringList;
}
case Node::Typedef:
result += QLatin1String("tdef/") + macName(node);
break;
- case Node::Function:
- {
+ case Node::Function: {
bool isMacro = false;
Q_UNUSED(isMacro);
const FunctionNode *func = static_cast<const FunctionNode *>(node);
@@ -392,27 +388,22 @@ QStringList CodeMarker::macRefsForNode(Node *node)
if (func->isMacro()) {
result += QLatin1String("macro/");
- }
- else if (func->isStatic()) {
+ } else if (func->isStatic()) {
result += QLatin1String("clm/");
- }
- else if (!func->parent()->name().isEmpty()) {
+ } else if (!func->parent()->name().isEmpty()) {
result += QLatin1String("instm/");
- }
- else {
+ } else {
result += QLatin1String("func/");
}
result += macName(func);
if (result.endsWith(QLatin1String("()")))
result.chop(2);
- }
- break;
+ } break;
case Node::Variable:
result += QLatin1String("data/") + macName(node);
break;
- case Node::Property:
- {
+ case Node::Property: {
const NodeList list = static_cast<const PropertyNode *>(node)->functions();
QStringList stringList;
for (auto *node : list) {