diff options
author | Luca Di Sera <luca.disera@qt.io> | 2022-01-12 14:58:21 +0100 |
---|---|---|
committer | Luca Di Sera <luca.disera@qt.io> | 2022-01-28 13:47:17 +0100 |
commit | 3407004fa96f416de3d54612477765879d4e9651 (patch) | |
tree | a0eaa8ea76a309222dc370e7a07cca2670652283 /src/qdoc/cppcodemarker.cpp | |
parent | ee63ed62732dbcc263f8a216ea61ea46b07c6cae (diff) | |
download | qttools-3407004fa96f416de3d54612477765879d4e9651.tar.gz |
qdoc: Simplify static initialization in CppCodeMarker::addMarkUp
`CppCodeMarker::addMarkUp` uses two static collections to define what is
considered a keyword or a primitive type when lexing code.
The initialization was done manually, hidden behind a branch to ensure
that it was executed only once, by copying
the values from some statically initialized arrays.
Supposedly, this was necessary at the time the code was written for a
lack of a suitable constructor for a `QSet`.
As static values are already initialized only once and the manual
initialization mirrors what `QSet`'s `inizializer_list` constructor does,
the code was modified to remove the branching and initialize the
collections in place.
Change-Id: Ic2ca86054970bd257ca7cbaba12c17de2bc177d3
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
Diffstat (limited to 'src/qdoc/cppcodemarker.cpp')
-rw-r--r-- | src/qdoc/cppcodemarker.cpp | 94 |
1 files changed, 39 insertions, 55 deletions
diff --git a/src/qdoc/cppcodemarker.cpp b/src/qdoc/cppcodemarker.cpp index 3b0a9a771..8f7dfc9e4 100644 --- a/src/qdoc/cppcodemarker.cpp +++ b/src/qdoc/cppcodemarker.cpp @@ -374,61 +374,45 @@ QString CppCodeMarker::functionEndRegExp(const QString & /* funcName */) QString CppCodeMarker::addMarkUp(const QString &in, const Node * /* relative */, const Location & /* location */) { - static QSet<QString> types; - static QSet<QString> keywords; - - if (types.isEmpty()) { - // initialize statics - Q_ASSERT(keywords.isEmpty()); - static const QString typeTable[] = { - QLatin1String("bool"), QLatin1String("char"), QLatin1String("double"), - QLatin1String("float"), QLatin1String("int"), QLatin1String("long"), - QLatin1String("short"), QLatin1String("signed"), QLatin1String("unsigned"), - QLatin1String("uint"), QLatin1String("ulong"), QLatin1String("ushort"), - QLatin1String("uchar"), QLatin1String("void"), QLatin1String("qlonglong"), - QLatin1String("qulonglong"), QLatin1String("qint"), QLatin1String("qint8"), - QLatin1String("qint16"), QLatin1String("qint32"), QLatin1String("qint64"), - QLatin1String("quint"), QLatin1String("quint8"), QLatin1String("quint16"), - QLatin1String("quint32"), QLatin1String("quint64"), QLatin1String("qreal"), - QLatin1String("cond") - }; - - static const QString keywordTable[] = { - QLatin1String("and"), QLatin1String("and_eq"), QLatin1String("asm"), - QLatin1String("auto"), QLatin1String("bitand"), QLatin1String("bitor"), - QLatin1String("break"), QLatin1String("case"), QLatin1String("catch"), - QLatin1String("class"), QLatin1String("compl"), QLatin1String("const"), - QLatin1String("const_cast"), QLatin1String("continue"), QLatin1String("default"), - QLatin1String("delete"), QLatin1String("do"), QLatin1String("dynamic_cast"), - QLatin1String("else"), QLatin1String("enum"), QLatin1String("explicit"), - QLatin1String("export"), QLatin1String("extern"), QLatin1String("false"), - QLatin1String("for"), QLatin1String("friend"), QLatin1String("goto"), - QLatin1String("if"), QLatin1String("include"), QLatin1String("inline"), - QLatin1String("monitor"), QLatin1String("mutable"), QLatin1String("namespace"), - QLatin1String("new"), QLatin1String("not"), QLatin1String("not_eq"), - QLatin1String("operator"), QLatin1String("or"), QLatin1String("or_eq"), - QLatin1String("private"), QLatin1String("protected"), QLatin1String("public"), - QLatin1String("register"), QLatin1String("reinterpret_cast"), QLatin1String("return"), - QLatin1String("sizeof"), QLatin1String("static"), QLatin1String("static_cast"), - QLatin1String("struct"), QLatin1String("switch"), QLatin1String("template"), - QLatin1String("this"), QLatin1String("throw"), QLatin1String("true"), - QLatin1String("try"), QLatin1String("typedef"), QLatin1String("typeid"), - QLatin1String("typename"), QLatin1String("union"), QLatin1String("using"), - QLatin1String("virtual"), QLatin1String("volatile"), QLatin1String("wchar_t"), - QLatin1String("while"), QLatin1String("xor"), QLatin1String("xor_eq"), - QLatin1String("synchronized"), - // Qt specific - QLatin1String("signals"), QLatin1String("slots"), QLatin1String("emit") - }; - - types.reserve(sizeof(typeTable) / sizeof(QString)); - for (int j = sizeof(typeTable) / sizeof(QString) - 1; j; --j) - types.insert(typeTable[j]); - - keywords.reserve(sizeof(keywordTable) / sizeof(QString)); - for (int j = sizeof(keywordTable) / sizeof(QString) - 1; j; --j) - keywords.insert(keywordTable[j]); - } + static QSet<QString> types{ + QLatin1String("bool"), QLatin1String("char"), QLatin1String("double"), + QLatin1String("float"), QLatin1String("int"), QLatin1String("long"), + QLatin1String("short"), QLatin1String("signed"), QLatin1String("unsigned"), + QLatin1String("uint"), QLatin1String("ulong"), QLatin1String("ushort"), + QLatin1String("uchar"), QLatin1String("void"), QLatin1String("qlonglong"), + QLatin1String("qulonglong"), QLatin1String("qint"), QLatin1String("qint8"), + QLatin1String("qint16"), QLatin1String("qint32"), QLatin1String("qint64"), + QLatin1String("quint"), QLatin1String("quint8"), QLatin1String("quint16"), + QLatin1String("quint32"), QLatin1String("quint64"), QLatin1String("qreal"), + QLatin1String("cond") + }; + + static QSet<QString> keywords{ + QLatin1String("and"), QLatin1String("and_eq"), QLatin1String("asm"), QLatin1String("auto"), + QLatin1String("bitand"), QLatin1String("bitor"), QLatin1String("break"), + QLatin1String("case"), QLatin1String("catch"), QLatin1String("class"), + QLatin1String("compl"), QLatin1String("const"), QLatin1String("const_cast"), + QLatin1String("continue"), QLatin1String("default"), QLatin1String("delete"), + QLatin1String("do"), QLatin1String("dynamic_cast"), QLatin1String("else"), + QLatin1String("enum"), QLatin1String("explicit"), QLatin1String("export"), + QLatin1String("extern"), QLatin1String("false"), QLatin1String("for"), + QLatin1String("friend"), QLatin1String("goto"), QLatin1String("if"), + QLatin1String("include"), QLatin1String("inline"), QLatin1String("monitor"), + QLatin1String("mutable"), QLatin1String("namespace"), QLatin1String("new"), + QLatin1String("not"), QLatin1String("not_eq"), QLatin1String("operator"), + QLatin1String("or"), QLatin1String("or_eq"), QLatin1String("private"), + QLatin1String("protected"), QLatin1String("public"), QLatin1String("register"), + QLatin1String("reinterpret_cast"), QLatin1String("return"), QLatin1String("sizeof"), + QLatin1String("static"), QLatin1String("static_cast"), QLatin1String("struct"), + QLatin1String("switch"), QLatin1String("template"), QLatin1String("this"), + QLatin1String("throw"), QLatin1String("true"), QLatin1String("try"), + QLatin1String("typedef"), QLatin1String("typeid"), QLatin1String("typename"), + QLatin1String("union"), QLatin1String("using"), QLatin1String("virtual"), + QLatin1String("volatile"), QLatin1String("wchar_t"), QLatin1String("while"), + QLatin1String("xor"), QLatin1String("xor_eq"), QLatin1String("synchronized"), + // Qt specific + QLatin1String("signals"), QLatin1String("slots"), QLatin1String("emit") + }; QString code = in; QString out; |