diff options
author | Oswald Buddenhagen <oswald.buddenhagen@nokia.com> | 2012-01-09 19:25:44 +0100 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-01-10 16:16:34 +0100 |
commit | 3e4f7ed5ed29c907815f5bae2628e417c340efbc (patch) | |
tree | 08facdfcde3ddc9f2d9b185ba93582254f7906fc /qmake/generators | |
parent | f5bdf7583012ab3f82ff53a5af1ee77ced9e049c (diff) |
QMap => QHash
this should make the evaluator quite a lot faster. the total win for
qtbase/src is only 6%, though.
i made some effort to avoid that output files get randomized. however, i
didn't bother to keep debug output sorted.
Change-Id: Id9cef4674c0153c11ebbb65cb63bf8c229eb56e3
Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
Diffstat (limited to 'qmake/generators')
-rw-r--r-- | qmake/generators/mac/pbuilder_pbx.cpp | 4 | ||||
-rw-r--r-- | qmake/generators/mac/pbuilder_pbx.h | 2 | ||||
-rw-r--r-- | qmake/generators/makefile.cpp | 39 | ||||
-rw-r--r-- | qmake/generators/metamakefile.cpp | 6 | ||||
-rw-r--r-- | qmake/generators/projectgenerator.cpp | 2 | ||||
-rw-r--r-- | qmake/generators/win32/msvc_objectmodel.cpp | 3 | ||||
-rw-r--r-- | qmake/generators/win32/msvc_vcproj.cpp | 6 | ||||
-rw-r--r-- | qmake/generators/win32/msvc_vcproj.h | 4 |
8 files changed, 33 insertions, 33 deletions
diff --git a/qmake/generators/mac/pbuilder_pbx.cpp b/qmake/generators/mac/pbuilder_pbx.cpp index fe84c2b1db..d6b2235e31 100644 --- a/qmake/generators/mac/pbuilder_pbx.cpp +++ b/qmake/generators/mac/pbuilder_pbx.cpp @@ -168,8 +168,8 @@ ProjectBuilderMakefileGenerator::writeSubDirs(QTextStream &t) if(tmp_proj.read(fn)) { if(Option::debug_level) { debug_msg(1, "Dumping all variables:"); - QMap<QString, QStringList> &vars = tmp_proj.variables(); - for(QMap<QString, QStringList>::Iterator it = vars.begin(); + QHash<QString, QStringList> &vars = tmp_proj.variables(); + for(QHash<QString, QStringList>::Iterator it = vars.begin(); it != vars.end(); ++it) { if(it.key().left(1) != "." && !it.value().isEmpty()) debug_msg(1, "%s: %s === %s", fn.toLatin1().constData(), it.key().toLatin1().constData(), diff --git a/qmake/generators/mac/pbuilder_pbx.h b/qmake/generators/mac/pbuilder_pbx.h index bf9749b7fd..f4568be0f7 100644 --- a/qmake/generators/mac/pbuilder_pbx.h +++ b/qmake/generators/mac/pbuilder_pbx.h @@ -56,7 +56,7 @@ class ProjectBuilderMakefileGenerator : public UnixMakefileGenerator bool writeMakefile(QTextStream &); QString pbxbuild(); - QMap<QString, QString> keys; + QHash<QString, QString> keys; QString keyFor(const QString &file); QString findProgram(const QString &prog); QString fixForOutput(const QString &file); diff --git a/qmake/generators/makefile.cpp b/qmake/generators/makefile.cpp index 0a8da26e17..84525bce5d 100644 --- a/qmake/generators/makefile.cpp +++ b/qmake/generators/makefile.cpp @@ -165,7 +165,7 @@ MakefileGenerator::MakefileGenerator() : void MakefileGenerator::verifyCompilers() { - QMap<QString, QStringList> &v = project->variables(); + QHash<QString, QStringList> &v = project->variables(); QStringList &quc = v["QMAKE_EXTRA_COMPILERS"]; for(int i = 0; i < quc.size(); ) { bool error = false; @@ -195,7 +195,7 @@ MakefileGenerator::initOutPaths() return; verifyCompilers(); init_opath_already = true; - QMap<QString, QStringList> &v = project->variables(); + QHash<QString, QStringList> &v = project->variables(); //for shadow builds if(!v.contains("QMAKE_ABSOLUTE_SOURCE_PATH")) { if(Option::mkfile::do_cache && !Option::mkfile::cachefile.isEmpty() && @@ -317,7 +317,7 @@ QStringList MakefileGenerator::findFilesInVPATH(QStringList l, uchar flags, const QString &vpath_var) { QStringList vpath; - QMap<QString, QStringList> &v = project->variables(); + QHash<QString, QStringList> &v = project->variables(); for(int val_it = 0; val_it < l.count(); ) { bool remove_file = false; QString &val = l[val_it]; @@ -411,7 +411,7 @@ MakefileGenerator::findFilesInVPATH(QStringList l, uchar flags, const QString &v void MakefileGenerator::initCompiler(const MakefileGenerator::Compiler &comp) { - QMap<QString, QStringList> &v = project->variables(); + QHash<QString, QStringList> &v = project->variables(); QStringList &l = v[comp.variable_in]; // find all the relevant file inputs if(!init_compiler_already.contains(comp.variable_in)) { @@ -431,7 +431,7 @@ MakefileGenerator::init() verifyCompilers(); init_already = true; - QMap<QString, QStringList> &v = project->variables(); + QHash<QString, QStringList> &v = project->variables(); QStringList &quc = v["QMAKE_EXTRA_COMPILERS"]; //make sure the COMPILERS are in the correct input/output chain order @@ -875,8 +875,8 @@ MakefileGenerator::processPrlFile(QString &file) debug_msg(2, "Ignored meta file %s [%s]", real_meta_file.toLatin1().constData(), libinfo.type().toLatin1().constData()); } else { ret = true; - QMap<QString, QStringList> &vars = libinfo.variables(); - for(QMap<QString, QStringList>::Iterator it = vars.begin(); it != vars.end(); ++it) + QHash<QString, QStringList> &vars = libinfo.variables(); + for(QHash<QString, QStringList>::Iterator it = vars.begin(); it != vars.end(); ++it) processPrlVariable(it.key(), it.value()); if(try_replace_file && !libinfo.isEmpty("QMAKE_PRL_TARGET")) { QString dir; @@ -2138,23 +2138,22 @@ MakefileGenerator::writeExtraCompilerVariables(QTextStream &t) void MakefileGenerator::writeExtraVariables(QTextStream &t) { - bool first = true; - QMap<QString, QStringList> &vars = project->variables(); + t << endl; + + QStringList outlist; + QHash<QString, QStringList> &vars = project->variables(); QStringList &exports = project->values("QMAKE_EXTRA_VARIABLES"); - for(QMap<QString, QStringList>::Iterator it = vars.begin(); it != vars.end(); ++it) { - for(QStringList::Iterator exp_it = exports.begin(); exp_it != exports.end(); ++exp_it) { + for (QHash<QString, QStringList>::Iterator it = vars.begin(); it != vars.end(); ++it) { + for (QStringList::Iterator exp_it = exports.begin(); exp_it != exports.end(); ++exp_it) { QRegExp rx((*exp_it), Qt::CaseInsensitive, QRegExp::Wildcard); - if(rx.exactMatch(it.key())) { - if(first) { - t << "\n####### Custom Variables" << endl; - first = false; - } - t << "EXPORT_" << it.key() << " = " << it.value().join(" ") << endl; - } + if (rx.exactMatch(it.key())) + outlist << ("EXPORT_" + it.key() + " = " + it.value().join(" ")); } } - if(!first) - t << endl; + if (!outlist.isEmpty()) { + t << "####### Custom Variables" << endl; + t << outlist.join("\n") << endl << endl; + } } bool diff --git a/qmake/generators/metamakefile.cpp b/qmake/generators/metamakefile.cpp index 19867f214b..e60d1c44ec 100644 --- a/qmake/generators/metamakefile.cpp +++ b/qmake/generators/metamakefile.cpp @@ -218,8 +218,8 @@ BuildsMetaMakefileGenerator::write(const QString &oldpwd) // debugging if(Option::debug_level) { debug_msg(1, "Dumping all variables:"); - QMap<QString, QStringList> &vars = project->variables(); - for(QMap<QString, QStringList>::Iterator it = vars.begin(); it != vars.end(); ++it) { + QHash<QString, QStringList> &vars = project->variables(); + for(QHash<QString, QStringList>::Iterator it = vars.begin(); it != vars.end(); ++it) { if(!it.key().startsWith(".") && !it.value().isEmpty()) debug_msg(1, "%s === %s", it.key().toLatin1().constData(), it.value().join(" :: ").toLatin1().constData()); @@ -237,7 +237,7 @@ MakefileGenerator project->projectFile().toLatin1().constData(),build.toLatin1().constData()); //initialize the base - QMap<QString, QStringList> basevars; + QHash<QString, QStringList> basevars; if(!project->isEmpty(build + ".CONFIG")) basevars["CONFIG"] += project->values(build + ".CONFIG"); basevars["CONFIG"] += build; diff --git a/qmake/generators/projectgenerator.cpp b/qmake/generators/projectgenerator.cpp index 7bfadbf182..ddbee4b39a 100644 --- a/qmake/generators/projectgenerator.cpp +++ b/qmake/generators/projectgenerator.cpp @@ -79,7 +79,7 @@ ProjectGenerator::init() project->read(QMakeProject::ReadFeatures); project->variables()["CONFIG"].clear(); - QMap<QString, QStringList> &v = project->variables(); + QHash<QString, QStringList> &v = project->variables(); QString templ = Option::user_template.isEmpty() ? QString("app") : Option::user_template; if(!Option::user_template_prefix.isEmpty()) templ.prepend(Option::user_template_prefix); diff --git a/qmake/generators/win32/msvc_objectmodel.cpp b/qmake/generators/win32/msvc_objectmodel.cpp index c506e38d06..96c230e98c 100644 --- a/qmake/generators/win32/msvc_objectmodel.cpp +++ b/qmake/generators/win32/msvc_objectmodel.cpp @@ -2303,13 +2303,14 @@ bool VCFilter::addExtraCompiler(const VCFilterFile &info) deps += CustomBuildTool.AdditionalDependencies; deps += cmd.left(cmd.indexOf(' ')); // Make sure that all deps are only once - QMap<QString, bool> uniqDeps; + QHash<QString, bool> uniqDeps; for (int c = 0; c < deps.count(); ++c) { QString aDep = deps.at(c).trimmed(); if (!aDep.isEmpty()) uniqDeps[aDep] = false; } CustomBuildTool.AdditionalDependencies = uniqDeps.keys(); + CustomBuildTool.AdditionalDependencies.sort(); } // Ensure that none of the output files are also dependencies. Or else, the custom buildstep diff --git a/qmake/generators/win32/msvc_vcproj.cpp b/qmake/generators/win32/msvc_vcproj.cpp index fc69881de9..55d3fa8455 100644 --- a/qmake/generators/win32/msvc_vcproj.cpp +++ b/qmake/generators/win32/msvc_vcproj.cpp @@ -467,8 +467,8 @@ void VcprojGenerator::writeSubDirs(QTextStream &t) Option::qmake_mode = old_mode; if(Option::debug_level) { debug_msg(1, "Dumping all variables:"); - QMap<QString, QStringList> &vars = tmp_proj.variables(); - for(QMap<QString, QStringList>::Iterator it = vars.begin(); + QHash<QString, QStringList> &vars = tmp_proj.variables(); + for(QHash<QString, QStringList>::Iterator it = vars.begin(); it != vars.end(); ++it) { if(it.key().left(1) != "." && !it.value().isEmpty()) debug_msg(1, "%s: %s === %s", fn.toLatin1().constData(), it.key().toLatin1().constData(), @@ -1575,7 +1575,7 @@ void VcprojGenerator::outputVariables() { #if 0 qDebug("Generator: MSVC.NET: List of current variables:"); - for(QMap<QString, QStringList>::ConstIterator it = project->variables().begin(); it != project->variables().end(); ++it) + for(QHash<QString, QStringList>::ConstIterator it = project->variables().begin(); it != project->variables().end(); ++it) qDebug("Generator: MSVC.NET: %s => %s", qPrintable(it.key()), qPrintable(it.value().join(" | "))); #endif } diff --git a/qmake/generators/win32/msvc_vcproj.h b/qmake/generators/win32/msvc_vcproj.h index 5bb6b2d85f..35ac670c62 100644 --- a/qmake/generators/win32/msvc_vcproj.h +++ b/qmake/generators/win32/msvc_vcproj.h @@ -76,8 +76,8 @@ public: bool autogenPrecompCPP; static bool hasBuiltinCompiler(const QString &file); - QMap<QString, QStringList> extraCompilerSources; - QMap<QString, QStringList> extraCompilerOutputs; + QHash<QString, QStringList> extraCompilerSources; + QHash<QString, QStringList> extraCompilerOutputs; bool usePCH; VCProjectWriter *projectWriter; |