summaryrefslogtreecommitdiffstats
path: root/src/tools
diff options
context:
space:
mode:
authorJędrzej Nowacki <jedrzej.nowacki@digia.com>2013-04-04 16:04:49 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-09-21 18:39:13 +0200
commit8969f57b6abef31d2e27500742dffa5498e38a46 (patch)
treeb4301de4637111cfb1d9826fd638c35f693f890b /src/tools
parentcab86ec3edda4c64b816b3a3f84aebd103093c67 (diff)
Improve qdoc performance.
Valgrind blamed CppCodeMarker::addMarkUp as slow, the patch improves situation by ~12% Use of QStringLiterals instead of const char* reduce amount of allocations on startup. Change-Id: I8737e02785506bba7e23868ab3952eab09d543d2 Reviewed-by: Martin Smith <martin.smith@digia.com>
Diffstat (limited to 'src/tools')
-rw-r--r--src/tools/qdoc/codemarker.cpp2
-rw-r--r--src/tools/qdoc/codeparser.cpp2
-rw-r--r--src/tools/qdoc/config.cpp79
-rw-r--r--src/tools/qdoc/config.h214
-rw-r--r--src/tools/qdoc/cppcodemarker.cpp127
-rw-r--r--src/tools/qdoc/ditaxmlgenerator.cpp2
-rw-r--r--src/tools/qdoc/generator.cpp2
-rw-r--r--src/tools/qdoc/htmlgenerator.cpp2
-rw-r--r--src/tools/qdoc/main.cpp20
9 files changed, 298 insertions, 152 deletions
diff --git a/src/tools/qdoc/codemarker.cpp b/src/tools/qdoc/codemarker.cpp
index 8faac66b1b..a1f0068f7d 100644
--- a/src/tools/qdoc/codemarker.cpp
+++ b/src/tools/qdoc/codemarker.cpp
@@ -94,7 +94,7 @@ void CodeMarker::terminateMarker()
*/
void CodeMarker::initialize(const Config& config)
{
- defaultLang = config.getString(QLatin1String(CONFIG_LANGUAGE));
+ defaultLang = config.getString(CONFIG_LANGUAGE);
QList<CodeMarker *>::ConstIterator m = markers.constBegin();
while (m != markers.constEnd()) {
(*m)->initializeMarker(config);
diff --git a/src/tools/qdoc/codeparser.cpp b/src/tools/qdoc/codeparser.cpp
index 1be67894cc..8f57a691bf 100644
--- a/src/tools/qdoc/codeparser.cpp
+++ b/src/tools/qdoc/codeparser.cpp
@@ -102,7 +102,7 @@ CodeParser::~CodeParser()
*/
void CodeParser::initializeParser(const Config& config)
{
- showInternal = config.getBool(QLatin1String(CONFIG_SHOWINTERNAL));
+ showInternal = config.getBool(CONFIG_SHOWINTERNAL);
}
/*!
diff --git a/src/tools/qdoc/config.cpp b/src/tools/qdoc/config.cpp
index 48be30c24e..0dd59fd214 100644
--- a/src/tools/qdoc/config.cpp
+++ b/src/tools/qdoc/config.cpp
@@ -55,6 +55,77 @@
QT_BEGIN_NAMESPACE
+QString ConfigStrings::ALIAS = QStringLiteral("alias");
+QString ConfigStrings::BASE = QStringLiteral("base");
+QString ConfigStrings::BASEDIR = QStringLiteral("basedir");
+QString ConfigStrings::BUILDVERSION = QStringLiteral("buildversion");
+QString ConfigStrings::CODEINDENT = QStringLiteral("codeindent");
+QString ConfigStrings::CPPCLASSESPAGE = QStringLiteral("cppclassespage");
+QString ConfigStrings::DEFINES = QStringLiteral("defines");
+QString ConfigStrings::DEPENDS = QStringLiteral("depends");
+QString ConfigStrings::DESCRIPTION = QStringLiteral("description");
+QString ConfigStrings::EDITION = QStringLiteral("edition");
+QString ConfigStrings::ENDHEADER = QStringLiteral("endheader");
+QString ConfigStrings::EXAMPLEDIRS = QStringLiteral("exampledirs");
+QString ConfigStrings::EXAMPLES = QStringLiteral("examples");
+QString ConfigStrings::EXAMPLESINSTALLPATH = QStringLiteral("examplesinstallpath");
+QString ConfigStrings::EXCLUDEDIRS = QStringLiteral("excludedirs");
+QString ConfigStrings::EXCLUDEFILES = QStringLiteral("excludefiles");
+QString ConfigStrings::EXTRAIMAGES = QStringLiteral("extraimages");
+QString ConfigStrings::FALSEHOODS = QStringLiteral("falsehoods");
+QString ConfigStrings::FORMATTING = QStringLiteral("formatting");
+QString ConfigStrings::GENERATEINDEX = QStringLiteral("generateindex");
+QString ConfigStrings::HEADERDIRS = QStringLiteral("headerdirs");
+QString ConfigStrings::HEADERS = QStringLiteral("headers");
+QString ConfigStrings::HEADERSCRIPTS = QStringLiteral("headerscripts");
+QString ConfigStrings::HEADERSTYLES = QStringLiteral("headerstyles");
+QString ConfigStrings::HOMEPAGE = QStringLiteral("homepage");
+QString ConfigStrings::IGNOREDIRECTIVES = QStringLiteral("ignoredirectives");
+QString ConfigStrings::IGNORETOKENS = QStringLiteral("ignoretokens");
+QString ConfigStrings::IMAGEDIRS = QStringLiteral("imagedirs");
+QString ConfigStrings::IMAGES = QStringLiteral("images");
+QString ConfigStrings::INDEXES = QStringLiteral("indexes");
+QString ConfigStrings::LANDINGPAGE = QStringLiteral("landingpage");
+QString ConfigStrings::LANGUAGE = QStringLiteral("language");
+QString ConfigStrings::MACRO = QStringLiteral("macro");
+QString ConfigStrings::MANIFESTMETA = QStringLiteral("manifestmeta");
+QString ConfigStrings::NATURALLANGUAGE = QStringLiteral("naturallanguage");
+QString ConfigStrings::NAVIGATION = QStringLiteral("navigation");
+QString ConfigStrings::NOLINKERRORS = QStringLiteral("nolinkerrors");
+QString ConfigStrings::OBSOLETELINKS = QStringLiteral("obsoletelinks");
+QString ConfigStrings::OUTPUTDIR = QStringLiteral("outputdir");
+QString ConfigStrings::OUTPUTENCODING = QStringLiteral("outputencoding");
+QString ConfigStrings::OUTPUTLANGUAGE = QStringLiteral("outputlanguage");
+QString ConfigStrings::OUTPUTFORMATS = QStringLiteral("outputformats");
+QString ConfigStrings::OUTPUTPREFIXES = QStringLiteral("outputprefixes");
+QString ConfigStrings::PROJECT = QStringLiteral("project");
+QString ConfigStrings::REDIRECTDOCUMENTATIONTODEVNULL = QStringLiteral("redirectdocumentationtodevnull");
+QString ConfigStrings::QHP = QStringLiteral("qhp");
+QString ConfigStrings::QUOTINGINFORMATION = QStringLiteral("quotinginformation");
+QString ConfigStrings::SCRIPTDIRS = QStringLiteral("scriptdirs");
+QString ConfigStrings::SCRIPTS = QStringLiteral("scripts");
+QString ConfigStrings::SHOWINTERNAL = QStringLiteral("showinternal");
+QString ConfigStrings::SOURCEDIRS = QStringLiteral("sourcedirs");
+QString ConfigStrings::SOURCEENCODING = QStringLiteral("sourceencoding");
+QString ConfigStrings::SOURCES = QStringLiteral("sources");
+QString ConfigStrings::SPURIOUS = QStringLiteral("spurious");
+QString ConfigStrings::STYLEDIRS = QStringLiteral("styledirs");
+QString ConfigStrings::STYLE = QStringLiteral("style");
+QString ConfigStrings::STYLES = QStringLiteral("styles");
+QString ConfigStrings::STYLESHEETS = QStringLiteral("stylesheets");
+QString ConfigStrings::SYNTAXHIGHLIGHTING = QStringLiteral("syntaxhighlighting");
+QString ConfigStrings::TEMPLATEDIR = QStringLiteral("templatedir");
+QString ConfigStrings::TABSIZE = QStringLiteral("tabsize");
+QString ConfigStrings::TAGFILE = QStringLiteral("tagfile");
+QString ConfigStrings::TRANSLATORS = QStringLiteral("translators");
+QString ConfigStrings::URL = QStringLiteral("url");
+QString ConfigStrings::VERSION = QStringLiteral("version");
+QString ConfigStrings::VERSIONSYM = QStringLiteral("versionsym");
+QString ConfigStrings::FILEEXTENSIONS = QStringLiteral("fileextensions");
+QString ConfigStrings::IMAGEEXTENSIONS = QStringLiteral("imageextensions");
+QString ConfigStrings::QMLONLY = QStringLiteral("qmlonly");
+QString ConfigStrings::QMLTYPESPAGE = QStringLiteral("qmltypespage");
+
/*!
An entry in a stack, where each entry is a list
of string values.
@@ -284,7 +355,7 @@ QString Config::getOutputDir() const
{
QString t;
if (overrideOutputDir.isNull())
- t = getString(QLatin1String(CONFIG_OUTPUTDIR));
+ t = getString(CONFIG_OUTPUTDIR);
else
t = overrideOutputDir;
if (!Generator::useOutputSubdirs()) {
@@ -305,7 +376,7 @@ QString Config::getOutputDir() const
QSet<QString> Config::getOutputFormats() const
{
if (overrideOutputFormats.isEmpty())
- return getStringSet(QLatin1String(CONFIG_OUTPUTFORMATS));
+ return getStringSet(CONFIG_OUTPUTFORMATS);
else
return overrideOutputFormats;
}
@@ -635,7 +706,7 @@ QStringList Config::getAllFiles(const QString &filesVar,
QStringList result = getStringList(filesVar);
QStringList dirs = getCanonicalPathList(dirsVar);
- QString nameFilter = getString(filesVar + dot + QLatin1String(CONFIG_FILEEXTENSIONS));
+ QString nameFilter = getString(filesVar + dot + CONFIG_FILEEXTENSIONS);
QStringList::ConstIterator d = dirs.constBegin();
while (d != dirs.constEnd()) {
@@ -665,7 +736,7 @@ QStringList Config::getExampleImageFiles(const QSet<QString> &excludedDirs,
{
QStringList result;
QStringList dirs = getCanonicalPathList("exampledirs");
- QString nameFilter = getString(CONFIG_EXAMPLES + dot + QLatin1String(CONFIG_IMAGEEXTENSIONS));
+ QString nameFilter = getString(CONFIG_EXAMPLES + dot + CONFIG_IMAGEEXTENSIONS);
QStringList::ConstIterator d = dirs.constBegin();
while (d != dirs.constEnd()) {
diff --git a/src/tools/qdoc/config.h b/src/tools/qdoc/config.h
index 6efff44442..54ee8de47f 100644
--- a/src/tools/qdoc/config.h
+++ b/src/tools/qdoc/config.h
@@ -164,76 +164,150 @@ private:
static QMap<QString, QStringList> includeFilesMap_;
};
-#define CONFIG_ALIAS "alias"
-#define CONFIG_BASE "base"
-#define CONFIG_BASEDIR "basedir"
-#define CONFIG_BUILDVERSION "buildversion"
-#define CONFIG_CODEINDENT "codeindent"
-#define CONFIG_CPPCLASSESPAGE "cppclassespage"
-#define CONFIG_DEFINES "defines"
-#define CONFIG_DEPENDS "depends"
-#define CONFIG_DESCRIPTION "description"
-#define CONFIG_EDITION "edition"
-#define CONFIG_ENDHEADER "endheader"
-#define CONFIG_EXAMPLEDIRS "exampledirs"
-#define CONFIG_EXAMPLES "examples"
-#define CONFIG_EXAMPLESINSTALLPATH "examplesinstallpath"
-#define CONFIG_EXCLUDEDIRS "excludedirs"
-#define CONFIG_EXCLUDEFILES "excludefiles"
-#define CONFIG_EXTRAIMAGES "extraimages"
-#define CONFIG_FALSEHOODS "falsehoods"
-#define CONFIG_FORMATTING "formatting"
-#define CONFIG_GENERATEINDEX "generateindex"
-#define CONFIG_HEADERDIRS "headerdirs"
-#define CONFIG_HEADERS "headers"
-#define CONFIG_HEADERSCRIPTS "headerscripts"
-#define CONFIG_HEADERSTYLES "headerstyles"
-#define CONFIG_HOMEPAGE "homepage"
-#define CONFIG_IGNOREDIRECTIVES "ignoredirectives"
-#define CONFIG_IGNORETOKENS "ignoretokens"
-#define CONFIG_IMAGEDIRS "imagedirs"
-#define CONFIG_IMAGES "images"
-#define CONFIG_INDEXES "indexes"
-#define CONFIG_LANGUAGE "language"
-#define CONFIG_LANDINGPAGE "landingpage"
-#define CONFIG_MACRO "macro"
-#define CONFIG_MANIFESTMETA "manifestmeta"
-#define CONFIG_NATURALLANGUAGE "naturallanguage"
-#define CONFIG_NAVIGATION "navigation"
-#define CONFIG_NOLINKERRORS "nolinkerrors"
-#define CONFIG_OBSOLETELINKS "obsoletelinks"
-#define CONFIG_OUTPUTDIR "outputdir"
-#define CONFIG_OUTPUTENCODING "outputencoding"
-#define CONFIG_OUTPUTLANGUAGE "outputlanguage"
-#define CONFIG_OUTPUTFORMATS "outputformats"
-#define CONFIG_OUTPUTPREFIXES "outputprefixes"
-#define CONFIG_PROJECT "project"
-#define CONFIG_REDIRECTDOCUMENTATIONTODEVNULL "redirectdocumentationtodevnull"
-#define CONFIG_QHP "qhp"
-#define CONFIG_QMLTYPESPAGE "qmltypespage"
-#define CONFIG_QUOTINGINFORMATION "quotinginformation"
-#define CONFIG_SCRIPTDIRS "scriptdirs"
-#define CONFIG_SCRIPTS "scripts"
-#define CONFIG_SHOWINTERNAL "showinternal"
-#define CONFIG_SOURCEDIRS "sourcedirs"
-#define CONFIG_SOURCEENCODING "sourceencoding"
-#define CONFIG_SOURCES "sources"
-#define CONFIG_SPURIOUS "spurious"
-#define CONFIG_STYLEDIRS "styledirs"
-#define CONFIG_STYLE "style"
-#define CONFIG_STYLES "styles"
-#define CONFIG_STYLESHEETS "stylesheets"
-#define CONFIG_SYNTAXHIGHLIGHTING "syntaxhighlighting"
-#define CONFIG_TEMPLATEDIR "templatedir"
-#define CONFIG_TABSIZE "tabsize"
-#define CONFIG_TAGFILE "tagfile"
-#define CONFIG_TRANSLATORS "translators"
-#define CONFIG_URL "url"
-#define CONFIG_VERSION "version"
-#define CONFIG_VERSIONSYM "versionsym"
-#define CONFIG_FILEEXTENSIONS "fileextensions"
-#define CONFIG_IMAGEEXTENSIONS "imageextensions"
-#define CONFIG_QMLONLY "qmlonly"
+struct ConfigStrings
+{
+ static QString ALIAS;
+ static QString BASE;
+ static QString BASEDIR;
+ static QString BUILDVERSION;
+ static QString CODEINDENT;
+ static QString CPPCLASSESPAGE;
+ static QString DEFINES;
+ static QString DEPENDS;
+ static QString DESCRIPTION;
+ static QString EDITION;
+ static QString ENDHEADER;
+ static QString EXAMPLEDIRS;
+ static QString EXAMPLES;
+ static QString EXAMPLESINSTALLPATH;
+ static QString EXCLUDEDIRS;
+ static QString EXCLUDEFILES;
+ static QString EXTRAIMAGES;
+ static QString FALSEHOODS;
+ static QString FORMATTING;
+ static QString GENERATEINDEX;
+ static QString HEADERDIRS;
+ static QString HEADERS;
+ static QString HEADERSCRIPTS;
+ static QString HEADERSTYLES;
+ static QString HOMEPAGE;
+ static QString IGNOREDIRECTIVES;
+ static QString IGNORETOKENS;
+ static QString IMAGEDIRS;
+ static QString IMAGES;
+ static QString INDEXES;
+ static QString LANDINGPAGE;
+ static QString LANGUAGE;
+ static QString MACRO;
+ static QString MANIFESTMETA;
+ static QString NATURALLANGUAGE;
+ static QString NAVIGATION;
+ static QString NOLINKERRORS;
+ static QString OBSOLETELINKS;
+ static QString OUTPUTDIR;
+ static QString OUTPUTENCODING;
+ static QString OUTPUTLANGUAGE;
+ static QString OUTPUTFORMATS;
+ static QString OUTPUTPREFIXES;
+ static QString PROJECT;
+ static QString REDIRECTDOCUMENTATIONTODEVNULL;
+ static QString QHP;
+ static QString QUOTINGINFORMATION;
+ static QString SCRIPTDIRS;
+ static QString SCRIPTS;
+ static QString SHOWINTERNAL;
+ static QString SOURCEDIRS;
+ static QString SOURCEENCODING;
+ static QString SOURCES;
+ static QString SPURIOUS;
+ static QString STYLEDIRS;
+ static QString STYLE;
+ static QString STYLES;
+ static QString STYLESHEETS;
+ static QString SYNTAXHIGHLIGHTING;
+ static QString TEMPLATEDIR;
+ static QString TABSIZE;
+ static QString TAGFILE;
+ static QString TRANSLATORS;
+ static QString URL;
+ static QString VERSION;
+ static QString VERSIONSYM;
+ static QString FILEEXTENSIONS;
+ static QString IMAGEEXTENSIONS;
+ static QString QMLONLY;
+ static QString QMLTYPESPAGE;
+};
+
+#define CONFIG_ALIAS ConfigStrings::ALIAS
+#define CONFIG_BASE ConfigStrings::BASE
+#define CONFIG_BASEDIR ConfigStrings::BASEDIR
+#define CONFIG_BUILDVERSION ConfigStrings::BUILDVERSION
+#define CONFIG_CODEINDENT ConfigStrings::CODEINDENT
+#define CONFIG_CPPCLASSESPAGE ConfigStrings::CPPCLASSESPAGE
+#define CONFIG_DEFINES ConfigStrings::DEFINES
+#define CONFIG_DEPENDS ConfigStrings::DEPENDS
+#define CONFIG_DESCRIPTION ConfigStrings::DESCRIPTION
+#define CONFIG_EDITION ConfigStrings::EDITION
+#define CONFIG_ENDHEADER ConfigStrings::ENDHEADER
+#define CONFIG_EXAMPLEDIRS ConfigStrings::EXAMPLEDIRS
+#define CONFIG_EXAMPLES ConfigStrings::EXAMPLES
+#define CONFIG_EXAMPLESINSTALLPATH ConfigStrings::EXAMPLESINSTALLPATH
+#define CONFIG_EXCLUDEDIRS ConfigStrings::EXCLUDEDIRS
+#define CONFIG_EXCLUDEFILES ConfigStrings::EXCLUDEFILES
+#define CONFIG_EXTRAIMAGES ConfigStrings::EXTRAIMAGES
+#define CONFIG_FALSEHOODS ConfigStrings::FALSEHOODS
+#define CONFIG_FORMATTING ConfigStrings::FORMATTING
+#define CONFIG_GENERATEINDEX ConfigStrings::GENERATEINDEX
+#define CONFIG_HEADERDIRS ConfigStrings::HEADERDIRS
+#define CONFIG_HEADERS ConfigStrings::HEADERS
+#define CONFIG_HEADERSCRIPTS ConfigStrings::HEADERSCRIPTS
+#define CONFIG_HEADERSTYLES ConfigStrings::HEADERSTYLES
+#define CONFIG_HOMEPAGE ConfigStrings::HOMEPAGE
+#define CONFIG_IGNOREDIRECTIVES ConfigStrings::IGNOREDIRECTIVES
+#define CONFIG_IGNORETOKENS ConfigStrings::IGNORETOKENS
+#define CONFIG_IMAGEDIRS ConfigStrings::IMAGEDIRS
+#define CONFIG_IMAGES ConfigStrings::IMAGES
+#define CONFIG_INDEXES ConfigStrings::INDEXES
+#define CONFIG_LANDINGPAGE ConfigStrings::LANDINGPAGE
+#define CONFIG_LANGUAGE ConfigStrings::LANGUAGE
+#define CONFIG_MACRO ConfigStrings::MACRO
+#define CONFIG_MANIFESTMETA ConfigStrings::MANIFESTMETA
+#define CONFIG_NATURALLANGUAGE ConfigStrings::NATURALLANGUAGE
+#define CONFIG_NAVIGATION ConfigStrings::NAVIGATION
+#define CONFIG_NOLINKERRORS ConfigStrings::NOLINKERRORS
+#define CONFIG_OBSOLETELINKS ConfigStrings::OBSOLETELINKS
+#define CONFIG_OUTPUTDIR ConfigStrings::OUTPUTDIR
+#define CONFIG_OUTPUTENCODING ConfigStrings::OUTPUTENCODING
+#define CONFIG_OUTPUTLANGUAGE ConfigStrings::OUTPUTLANGUAGE
+#define CONFIG_OUTPUTFORMATS ConfigStrings::OUTPUTFORMATS
+#define CONFIG_OUTPUTPREFIXES ConfigStrings::OUTPUTPREFIXES
+#define CONFIG_PROJECT ConfigStrings::PROJECT
+#define CONFIG_REDIRECTDOCUMENTATIONTODEVNULL ConfigStrings::REDIRECTDOCUMENTATIONTODEVNULL
+#define CONFIG_QHP ConfigStrings::QHP
+#define CONFIG_QUOTINGINFORMATION ConfigStrings::QUOTINGINFORMATION
+#define CONFIG_SCRIPTDIRS ConfigStrings::SCRIPTDIRS
+#define CONFIG_SCRIPTS ConfigStrings::SCRIPTS
+#define CONFIG_SHOWINTERNAL ConfigStrings::SHOWINTERNAL
+#define CONFIG_SOURCEDIRS ConfigStrings::SOURCEDIRS
+#define CONFIG_SOURCEENCODING ConfigStrings::SOURCEENCODING
+#define CONFIG_SOURCES ConfigStrings::SOURCES
+#define CONFIG_SPURIOUS ConfigStrings::SPURIOUS
+#define CONFIG_STYLEDIRS ConfigStrings::STYLEDIRS
+#define CONFIG_STYLE ConfigStrings::STYLE
+#define CONFIG_STYLES ConfigStrings::STYLES
+#define CONFIG_STYLESHEETS ConfigStrings::STYLESHEETS
+#define CONFIG_SYNTAXHIGHLIGHTING ConfigStrings::SYNTAXHIGHLIGHTING
+#define CONFIG_TEMPLATEDIR ConfigStrings::TEMPLATEDIR
+#define CONFIG_TABSIZE ConfigStrings::TABSIZE
+#define CONFIG_TAGFILE ConfigStrings::TAGFILE
+#define CONFIG_TRANSLATORS ConfigStrings::TRANSLATORS
+#define CONFIG_URL ConfigStrings::URL
+#define CONFIG_VERSION ConfigStrings::VERSION
+#define CONFIG_VERSIONSYM ConfigStrings::VERSIONSYM
+#define CONFIG_FILEEXTENSIONS ConfigStrings::FILEEXTENSIONS
+#define CONFIG_IMAGEEXTENSIONS ConfigStrings::IMAGEEXTENSIONS
+#define CONFIG_QMLONLY ConfigStrings::QMLONLY
+#define CONFIG_QMLTYPESPAGE ConfigStrings::QMLTYPESPAGE
QT_END_NAMESPACE
diff --git a/src/tools/qdoc/cppcodemarker.cpp b/src/tools/qdoc/cppcodemarker.cpp
index ab58238301..a5408f7178 100644
--- a/src/tools/qdoc/cppcodemarker.cpp
+++ b/src/tools/qdoc/cppcodemarker.cpp
@@ -802,31 +802,6 @@ QList<Section> CppCodeMarker::sections(const InnerNode *inner,
return sections;
}
-static const char * const typeTable[] = {
- "bool", "char", "double", "float", "int", "long", "short",
- "signed", "unsigned", "uint", "ulong", "ushort", "uchar", "void",
- "qlonglong", "qulonglong",
- "qint", "qint8", "qint16", "qint32", "qint64",
- "quint", "quint8", "quint16", "quint32", "quint64",
- "qreal", "cond", 0
-};
-
-static const char * const keywordTable[] = {
- "and", "and_eq", "asm", "auto", "bitand", "bitor", "break",
- "case", "catch", "class", "compl", "const", "const_cast",
- "continue", "default", "delete", "do", "dynamic_cast", "else",
- "enum", "explicit", "export", "extern", "false", "for", "friend",
- "goto", "if", "include", "inline", "monitor", "mutable", "namespace",
- "new", "not", "not_eq", "operator", "or", "or_eq", "private", "protected",
- "public", "register", "reinterpret_cast", "return", "sizeof",
- "static", "static_cast", "struct", "switch", "template", "this",
- "throw", "true", "try", "typedef", "typeid", "typename", "union",
- "using", "virtual", "volatile", "wchar_t", "while", "xor",
- "xor_eq", "synchronized",
- // Qt specific
- "signals", "slots", "emit", 0
-};
-
/*
@char
@class
@@ -844,25 +819,51 @@ 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]);
+ }
#define readChar() \
ch = (i < (int)code.length()) ? code[i++].cell() : EOF
QString code = in;
-
- QMap<QString, int> types;
- QMap<QString, int> keywords;
- int j = 0;
- while (typeTable[j] != 0) {
- types.insert(QString(typeTable[j]), 0);
- j++;
- }
- j = 0;
- while (keywordTable[j] != 0) {
- keywords.insert(QString(keywordTable[j]), 0);
- j++;
- }
-
- QString out;
+ QStringList out;
+ QString text;
int braceDepth = 0;
int parenDepth = 0;
int i = 0;
@@ -871,6 +872,7 @@ QString CppCodeMarker::addMarkUp(const QString &in,
QChar ch;
QRegExp classRegExp("Qt?(?:[A-Z3]+[a-z][A-Za-z]*|t)");
QRegExp functionRegExp("q([A-Z][a-z]+)+");
+ QRegExp findFunctionRegExp(QStringLiteral("^\\s*\\("));
readChar();
@@ -887,18 +889,18 @@ QString CppCodeMarker::addMarkUp(const QString &in,
} while (ch.isLetterOrNumber() || ch == '_');
if (classRegExp.exactMatch(ident)) {
- tag = QLatin1String("type");
+ tag = QStringLiteral("type");
} else if (functionRegExp.exactMatch(ident)) {
- tag = QLatin1String("func");
+ tag = QStringLiteral("func");
target = true;
} else if (types.contains(ident)) {
- tag = QLatin1String("type");
+ tag = QStringLiteral("type");
} else if (keywords.contains(ident)) {
- tag = QLatin1String("keyword");
+ tag = QStringLiteral("keyword");
} else if (braceDepth == 0 && parenDepth == 0) {
if (QString(code.unicode() + i - 1, code.length() - (i - 1))
- .indexOf(QRegExp(QLatin1String("^\\s*\\("))) == 0)
- tag = QLatin1String("func");
+ .indexOf(findFunctionRegExp) == 0)
+ tag = QStringLiteral("func");
target = true;
}
} else if (ch.isDigit()) {
@@ -906,7 +908,7 @@ QString CppCodeMarker::addMarkUp(const QString &in,
finish = i;
readChar();
} while (ch.isLetterOrNumber() || ch == '.');
- tag = QLatin1String("number");
+ tag = QStringLiteral("number");
} else {
switch (ch.unicode()) {
case '+':
@@ -928,7 +930,7 @@ QString CppCodeMarker::addMarkUp(const QString &in,
case '~':
finish = i;
readChar();
- tag = QLatin1String("op");
+ tag = QStringLiteral("op");
break;
case '"':
finish = i;
@@ -941,7 +943,7 @@ QString CppCodeMarker::addMarkUp(const QString &in,
}
finish = i;
readChar();
- tag = QLatin1String("string");
+ tag = QStringLiteral("string");
break;
case '#':
finish = i;
@@ -952,7 +954,7 @@ QString CppCodeMarker::addMarkUp(const QString &in,
finish = i;
readChar();
}
- tag = QLatin1String("preprocessor");
+ tag = QStringLiteral("preprocessor");
break;
case '\'':
finish = i;
@@ -965,7 +967,7 @@ QString CppCodeMarker::addMarkUp(const QString &in,
}
finish = i;
readChar();
- tag = QLatin1String("char");
+ tag = QStringLiteral("char");
break;
case '(':
finish = i;
@@ -983,7 +985,7 @@ QString CppCodeMarker::addMarkUp(const QString &in,
if (ch == ':') {
finish = i;
readChar();
- tag = QLatin1String("op");
+ tag = QStringLiteral("op");
}
break;
case '/':
@@ -994,7 +996,7 @@ QString CppCodeMarker::addMarkUp(const QString &in,
finish = i;
readChar();
} while (ch != EOF && ch != '\n');
- tag = QLatin1String("comment");
+ tag = QStringLiteral("comment");
} else if (ch == '*') {
bool metAster = false;
bool metAsterSlash = false;
@@ -1015,9 +1017,9 @@ QString CppCodeMarker::addMarkUp(const QString &in,
finish = i;
readChar();
}
- tag = QLatin1String("comment");
+ tag = QStringLiteral("comment");
} else {
- tag = QLatin1String("op");
+ tag = QStringLiteral("op");
}
break;
case '{':
@@ -1036,28 +1038,27 @@ QString CppCodeMarker::addMarkUp(const QString &in,
}
}
- QString text;
text = code.mid(start, finish - start);
start = finish;
if (!tag.isEmpty()) {
- out += QLatin1String("<@") + tag;
+ out << QStringLiteral("<@") << tag;
if (target)
- out += QLatin1String(" target=\"") + text + QLatin1String("()\"");
- out += QLatin1Char('>');
+ out << QStringLiteral(" target=\"") << text << QStringLiteral("()\"");
+ out << QStringLiteral(">");
}
- out += protect(text);
+ out << protect(text);
if (!tag.isEmpty())
- out += QLatin1String("</@") + tag + QLatin1Char('>');
+ out << QStringLiteral("</@") << tag << QStringLiteral(">");
}
if (start < code.length()) {
- out += protect(code.mid(start));
+ out << protect(code.mid(start));
}
- return out;
+ return out.join(QString());
}
/*!
diff --git a/src/tools/qdoc/ditaxmlgenerator.cpp b/src/tools/qdoc/ditaxmlgenerator.cpp
index 46fb6e27e6..275fc9ecae 100644
--- a/src/tools/qdoc/ditaxmlgenerator.cpp
+++ b/src/tools/qdoc/ditaxmlgenerator.cpp
@@ -502,7 +502,7 @@ DitaXmlGenerator::~DitaXmlGenerator()
void DitaXmlGenerator::initializeGenerator(const Config &config)
{
Generator::initializeGenerator(config);
- obsoleteLinks = config.getBool(QLatin1String(CONFIG_OBSOLETELINKS));
+ obsoleteLinks = config.getBool(CONFIG_OBSOLETELINKS);
setImageFileExtensions(QStringList() << "png" << "jpg" << "jpeg" << "gif");
style = config.getString(DitaXmlGenerator::format() +
diff --git a/src/tools/qdoc/generator.cpp b/src/tools/qdoc/generator.cpp
index cfea6235d3..0d4e563836 100644
--- a/src/tools/qdoc/generator.cpp
+++ b/src/tools/qdoc/generator.cpp
@@ -1643,7 +1643,7 @@ void Generator::initialize(const Config &config)
}
else
outputPrefixes[QLatin1String("QML")] = QLatin1String("qml-");
- noLinkErrors_ = config.getBool(QLatin1String(CONFIG_NOLINKERRORS));
+ noLinkErrors_ = config.getBool(CONFIG_NOLINKERRORS);
}
/*!
diff --git a/src/tools/qdoc/htmlgenerator.cpp b/src/tools/qdoc/htmlgenerator.cpp
index 52af5d60b9..1c28ede976 100644
--- a/src/tools/qdoc/htmlgenerator.cpp
+++ b/src/tools/qdoc/htmlgenerator.cpp
@@ -136,7 +136,7 @@ void HtmlGenerator::initializeGenerator(const Config &config)
};
Generator::initializeGenerator(config);
- obsoleteLinks = config.getBool(QLatin1String(CONFIG_OBSOLETELINKS));
+ obsoleteLinks = config.getBool(CONFIG_OBSOLETELINKS);
setImageFileExtensions(QStringList() << "png" << "jpg" << "jpeg" << "gif");
int i = 0;
while (defaults[i].key) {
diff --git a/src/tools/qdoc/main.cpp b/src/tools/qdoc/main.cpp
index 26aa0a7dc2..dd72be7f6e 100644
--- a/src/tools/qdoc/main.cpp
+++ b/src/tools/qdoc/main.cpp
@@ -78,16 +78,16 @@ QT_BEGIN_NAMESPACE
And those are all the default values for configuration variables.
*/
static const struct {
- const char *key;
- const char *value;
+ const QString key;
+ const QString value;
} defaults[] = {
- { CONFIG_CODEINDENT, "4" },
- { CONFIG_FALSEHOODS, "0" },
- { CONFIG_FILEEXTENSIONS, "*.cpp *.h *.qdoc *.qml"},
- { CONFIG_LANGUAGE, "Cpp" },
- { CONFIG_OUTPUTFORMATS, "HTML" },
- { CONFIG_TABSIZE, "8" },
- { 0, 0 }
+ { CONFIG_CODEINDENT, QLatin1String("4") },
+ { CONFIG_FALSEHOODS, QLatin1String("0") },
+ { CONFIG_FILEEXTENSIONS, QLatin1String("*.cpp *.h *.qdoc *.qml") },
+ { CONFIG_LANGUAGE, QLatin1String("Cpp") },
+ { CONFIG_OUTPUTFORMATS, QLatin1String("HTML") },
+ { CONFIG_TABSIZE, QLatin1String("8") },
+ { QString(), QString() }
};
bool creationTimeBefore(const QFileInfo &fi1, const QFileInfo &fi2)
@@ -269,7 +269,7 @@ static void processQdocconfFile(const QString &fileName)
*/
Config config(QCoreApplication::translate("QDoc", "qdoc"));
int i = 0;
- while (defaults[i].key) {
+ while (!defaults[i].key.isEmpty()) {
config.setStringList(defaults[i].key, QStringList() << defaults[i].value);
++i;
}