diff options
Diffstat (limited to 'src/qdoc/codemarker.cpp')
-rw-r--r-- | src/qdoc/codemarker.cpp | 151 |
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("&"); -static const QString slt = QLatin1String("<"); -static const QString sgt = QLatin1String(">"); +static const QString samp = QLatin1String("&"); +static const QString slt = QLatin1String("<"); +static const QString sgt = QLatin1String(">"); static const QString squot = QLatin1String("""); 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) { |