aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/app/qbs-setup-qt/setupqt.cpp26
-rw-r--r--src/app/qbs/parser/parsercommand.cpp4
-rw-r--r--src/lib/corelib/api/project.cpp6
-rw-r--r--src/lib/corelib/api/project.h5
-rw-r--r--src/lib/corelib/generators/generatordata.cpp9
-rw-r--r--src/lib/corelib/generators/visualstudio/msbuildfiltersproject.cpp6
-rw-r--r--src/lib/corelib/generators/visualstudio/msbuildqbsproductproject.cpp15
-rw-r--r--src/lib/corelib/language/scriptengine.cpp3
-rw-r--r--src/lib/corelib/logging/logger.cpp6
-rw-r--r--src/lib/corelib/logging/logger.h4
-rw-r--r--src/lib/corelib/parser/qmljsengine_p.h3
-rw-r--r--src/lib/corelib/tools/set.h17
-rw-r--r--src/lib/corelib/tools/toolchains.cpp3
-rw-r--r--src/lib/qtprofilesetup/qtmoduleinfo.cpp10
-rw-r--r--src/lib/qtprofilesetup/qtmoduleinfo.h7
-rw-r--r--tests/auto/api/tst_api.cpp4
16 files changed, 76 insertions, 52 deletions
diff --git a/src/app/qbs-setup-qt/setupqt.cpp b/src/app/qbs-setup-qt/setupqt.cpp
index 635ca3b13..0abbaaa67 100644
--- a/src/app/qbs-setup-qt/setupqt.cpp
+++ b/src/app/qbs-setup-qt/setupqt.cpp
@@ -45,6 +45,7 @@
#include <tools/architectures.h>
#include <tools/hostosinfo.h>
#include <tools/profile.h>
+#include <tools/set.h>
#include <tools/settings.h>
#include <tools/version.h>
@@ -288,11 +289,12 @@ QtEnvironment SetupQt::fetchEnvironment(const QString &qmakePath)
static bool isToolchainProfile(const Profile &profile)
{
- const QSet<QString> actual = profile.allKeys(Profile::KeySelectionRecursive).toSet();
- QSet<QString> expected = QSet<QString>() << QLatin1String("qbs.toolchain");
+ const auto actual = Internal::Set<QString>::fromList(
+ profile.allKeys(Profile::KeySelectionRecursive));
+ Internal::Set<QString> expected = Internal::Set<QString> { QLatin1String("qbs.toolchain") };
if (HostOsInfo::isMacosHost())
expected.insert(QLatin1String("qbs.targetOS")); // match only Xcode profiles
- return QSet<QString>(actual).unite(expected) == actual;
+ return Internal::Set<QString>(actual).unite(expected) == actual;
}
static bool isQtProfile(const Profile &profile)
@@ -442,11 +444,12 @@ static Match compatibility(const QtEnvironment &env, const Profile &toolchainPro
{
Match match = MatchFull;
- const QSet<QString> toolchainNames = toolchainProfile.value(QLatin1String("qbs.toolchain"))
- .toStringList().toSet();
- const QSet<QString> mkspecToolchainNames = qbsToolchainFromQtMkspec(env.mkspecName).toSet();
+ const auto toolchainNames = Internal::Set<QString>::fromList(
+ toolchainProfile.value(QLatin1String("qbs.toolchain")).toStringList());
+ const auto mkspecToolchainNames = Internal::Set<QString>::fromList(
+ qbsToolchainFromQtMkspec(env.mkspecName));
if (areProfilePropertiesIncompatible(toolchainNames, mkspecToolchainNames)) {
- QSet<QString> intersection = toolchainNames;
+ auto intersection = toolchainNames;
intersection.intersect(mkspecToolchainNames);
if (!intersection.isEmpty())
match = MatchPartial;
@@ -454,10 +457,11 @@ static Match compatibility(const QtEnvironment &env, const Profile &toolchainPro
return MatchNone;
}
- const QSet<QString> targetOsNames = toolchainProfile.value(QLatin1String("qbs.targetOS"))
- .toStringList().toSet();
- if (areProfilePropertiesIncompatible(qbsTargetOsFromQtMkspec(env.mkspecName).toSet(),
- targetOsNames))
+ const auto targetOsNames = Internal::Set<QString>::fromList(
+ toolchainProfile.value(QLatin1String("qbs.targetOS")).toStringList());
+ if (areProfilePropertiesIncompatible(
+ Internal::Set<QString>::fromList(qbsTargetOsFromQtMkspec(env.mkspecName)),
+ targetOsNames))
return MatchNone;
const QString toolchainArchitecture = toolchainProfile.value(QLatin1String("qbs.architecture"))
diff --git a/src/app/qbs/parser/parsercommand.cpp b/src/app/qbs/parser/parsercommand.cpp
index 63bd46710..40c4fa112 100644
--- a/src/app/qbs/parser/parsercommand.cpp
+++ b/src/app/qbs/parser/parsercommand.cpp
@@ -44,9 +44,9 @@
#include <logging/translator.h>
#include <tools/error.h>
#include <tools/hostosinfo.h>
+#include <tools/set.h>
#include <QtCore/qmap.h>
-#include <QtCore/qset.h>
namespace qbs {
using namespace Internal;
@@ -91,7 +91,7 @@ QList<CommandLineOption::Type> Command::actualSupportedOptions() const
void Command::parseOptions(QStringList &input)
{
- QSet<CommandLineOption *> usedOptions;
+ Set<CommandLineOption *> usedOptions;
while (!input.isEmpty()) {
const QString optionString = input.first();
if (!optionString.startsWith(QLatin1Char('-')))
diff --git a/src/lib/corelib/api/project.cpp b/src/lib/corelib/api/project.cpp
index 4d79168eb..61ee8d57e 100644
--- a/src/lib/corelib/api/project.cpp
+++ b/src/lib/corelib/api/project.cpp
@@ -1085,10 +1085,10 @@ QHash<QString, QString> Project::usedEnvironment() const
return d->internalProject->usedEnvironment;
}
-QSet<QString> Project::buildSystemFiles() const
+std::set<QString> Project::buildSystemFiles() const
{
- QBS_ASSERT(isValid(), return QSet<QString>());
- return d->internalProject->buildSystemFiles.toQSet();
+ QBS_ASSERT(isValid(), return std::set<QString>());
+ return d->internalProject->buildSystemFiles.toStdSet();
}
RuleCommandList Project::ruleCommands(const ProductData &product,
diff --git a/src/lib/corelib/api/project.h b/src/lib/corelib/api/project.h
index 0462682b1..5456da335 100644
--- a/src/lib/corelib/api/project.h
+++ b/src/lib/corelib/api/project.h
@@ -46,10 +46,11 @@
#include <QtCore/qshareddata.h>
#include <QtCore/qhash.h>
#include <QtCore/qlist.h>
-#include <QtCore/qset.h>
#include <QtCore/qstringlist.h>
#include <QtCore/qvariant.h>
+#include <set>
+
QT_BEGIN_NAMESPACE
class QIODevice;
class QObject;
@@ -131,7 +132,7 @@ public:
QVariantMap projectConfiguration() const;
QHash<QString, QString> usedEnvironment() const;
- QSet<QString> buildSystemFiles() const;
+ std::set<QString> buildSystemFiles() const;
RuleCommandList ruleCommands(const ProductData &product, const QString &inputFilePath,
const QString &outputFileTag, ErrorInfo *error = 0) const;
diff --git a/src/lib/corelib/generators/generatordata.cpp b/src/lib/corelib/generators/generatordata.cpp
index 47178bca3..eb0cb2d09 100644
--- a/src/lib/corelib/generators/generatordata.cpp
+++ b/src/lib/corelib/generators/generatordata.cpp
@@ -39,6 +39,7 @@
#include "generatordata.h"
#include <tools/error.h>
+#include <tools/set.h>
#include <QtCore/qdir.h>
@@ -93,7 +94,7 @@ QString GeneratableProjectData::name() const
QDir GeneratableProject::baseBuildDirectory() const
{
- QSet<QString> baseBuildDirectory;
+ Internal::Set<QString> baseBuildDirectory;
QMapIterator<QString, ProjectData> it(data);
while (it.hasNext()) {
it.next();
@@ -102,19 +103,19 @@ QDir GeneratableProject::baseBuildDirectory() const
baseBuildDirectory.insert(dir.absolutePath());
}
Q_ASSERT(baseBuildDirectory.size() == 1);
- return baseBuildDirectory.values().first();
+ return *baseBuildDirectory.begin();
}
QFileInfo GeneratableProject::filePath() const
{
- QSet<QString> filePath;
+ Internal::Set<QString> filePath;
QMapIterator<QString, ProjectData> it(data);
while (it.hasNext()) {
it.next();
filePath.insert(it.value().location().filePath());
}
Q_ASSERT(filePath.size() == 1);
- return filePath.values().first();
+ return *filePath.begin();
}
bool GeneratableProject::hasMultipleConfigurations() const
diff --git a/src/lib/corelib/generators/visualstudio/msbuildfiltersproject.cpp b/src/lib/corelib/generators/visualstudio/msbuildfiltersproject.cpp
index 22bc72841..c1a60e919 100644
--- a/src/lib/corelib/generators/visualstudio/msbuildfiltersproject.cpp
+++ b/src/lib/corelib/generators/visualstudio/msbuildfiltersproject.cpp
@@ -37,6 +37,8 @@
#include "msbuild/items/msbuildfilter.h"
#include "msbuild/items/msbuildnone.h"
+#include <tools/set.h>
+
#include <QtCore/qfileinfo.h>
#include <QtCore/qvector.h>
@@ -123,11 +125,11 @@ MSBuildFiltersProject::MSBuildFiltersProject(const GeneratableProductData &produ
filter->appendProperty(QStringLiteral("SourceControlFiles"), options->sourceControlFiles());
}
- QSet<QString> allFiles;
+ Internal::Set<QString> allFiles;
for (const auto &productData : product.data.values()) {
for (const auto &groupData : productData.groups())
if (groupData.isEnabled())
- allFiles.unite(groupData.allFilePaths().toSet());
+ allFiles.unite(Internal::Set<QString>::fromList(groupData.allFilePaths()));
}
auto allFilesSorted = allFiles.toList();
diff --git a/src/lib/corelib/generators/visualstudio/msbuildqbsproductproject.cpp b/src/lib/corelib/generators/visualstudio/msbuildqbsproductproject.cpp
index 45aafbac7..6aa9857fb 100644
--- a/src/lib/corelib/generators/visualstudio/msbuildqbsproductproject.cpp
+++ b/src/lib/corelib/generators/visualstudio/msbuildqbsproductproject.cpp
@@ -336,20 +336,15 @@ void MSBuildQbsProductProject::addItemDefGroup(const Project &project,
debugBuild ? QStringLiteral("false") : QStringLiteral("true"));
}
-// No QSet::intersects until Qt 5.6
-template <class T> bool setIntersects(const QSet<T> &this_, const QSet<T> &other)
-{
- QSet<T> s = this_;
- return !s.intersect(other).isEmpty();
-}
-
static MSBuildFileItem *fileItemForFileTags(const QList<QString> &fileTags,
IMSBuildItemGroup *parent = 0)
{
- const auto fileTagsSet = fileTags.toSet();
- if (setIntersects(fileTagsSet, QSet<QString>() << QStringLiteral("hpp")))
+ const auto fileTagsSet = Internal::Set<QString>::fromList(fileTags);
+ if (fileTagsSet.intersects(
+ Internal::Set<QString> { QStringLiteral("hpp") }))
return new MSBuildClInclude(parent);
- if (setIntersects(fileTagsSet, QSet<QString>() << QStringLiteral("c") << QStringLiteral("cpp")))
+ if (fileTagsSet.intersects(
+ Internal::Set<QString> { QStringLiteral("c"), QStringLiteral("cpp") }))
return new MSBuildClCompile(parent);
return new MSBuildNone(parent);
}
diff --git a/src/lib/corelib/language/scriptengine.cpp b/src/lib/corelib/language/scriptengine.cpp
index 1622769ad..c071b2c14 100644
--- a/src/lib/corelib/language/scriptengine.cpp
+++ b/src/lib/corelib/language/scriptengine.cpp
@@ -58,13 +58,14 @@
#include <QtCore/qdiriterator.h>
#include <QtCore/qfile.h>
#include <QtCore/qfileinfo.h>
-#include <QtCore/qset.h>
#include <QtCore/qtextstream.h>
#include <QtCore/qtimer.h>
#include <QtScript/qscriptclass.h>
#include <QtScript/qscriptvalueiterator.h>
+#include <set>
+
namespace qbs {
namespace Internal {
diff --git a/src/lib/corelib/logging/logger.cpp b/src/lib/corelib/logging/logger.cpp
index a11c2181d..277e40427 100644
--- a/src/lib/corelib/logging/logger.cpp
+++ b/src/lib/corelib/logging/logger.cpp
@@ -43,13 +43,15 @@
#include "logger.h"
+#include <tools/set.h>
+
#include <QtCore/qbytearray.h>
#include <QtCore/qelapsedtimer.h>
-#include <QtCore/qset.h>
#include <QtCore/qvariant.h>
#include <cstdarg>
#include <mutex>
+#include <set>
#include <stdio.h>
namespace qbs {
@@ -143,7 +145,7 @@ LogWriter operator<<(LogWriter w, const QStringList &strList)
return w;
}
-LogWriter operator<<(LogWriter w, const QSet<QString> &strSet)
+LogWriter operator<<(LogWriter w, const Internal::Set<QString> &strSet)
{
bool firstLoop = true;
w.write('(');
diff --git a/src/lib/corelib/logging/logger.h b/src/lib/corelib/logging/logger.h
index be0c1de3d..aee59dde4 100644
--- a/src/lib/corelib/logging/logger.h
+++ b/src/lib/corelib/logging/logger.h
@@ -55,6 +55,8 @@ QT_END_NAMESPACE
namespace qbs {
namespace Internal {
+template<typename T> class Set;
+
// Note that while these classes are not part of the API, we export some stuff for use by
// our command line tools for the sake of a uniform logging approach.
@@ -99,7 +101,7 @@ QBS_EXPORT LogWriter operator<<(LogWriter w, const char *str);
QBS_EXPORT LogWriter operator<<(LogWriter w, const QByteArray &byteArray);
QBS_EXPORT LogWriter operator<<(LogWriter w, const QString &str);
QBS_EXPORT LogWriter operator<<(LogWriter w, const QStringList &strList);
-QBS_EXPORT LogWriter operator<<(LogWriter w, const QSet<QString> &strSet);
+QBS_EXPORT LogWriter operator<<(LogWriter w, const Internal::Set<QString> &strSet);
QBS_EXPORT LogWriter operator<<(LogWriter w, const QVariant &variant);
QBS_EXPORT LogWriter operator<<(LogWriter w, int n);
QBS_EXPORT LogWriter operator<<(LogWriter w, qint64 n);
diff --git a/src/lib/corelib/parser/qmljsengine_p.h b/src/lib/corelib/parser/qmljsengine_p.h
index 14d5dfd74..be88b917b 100644
--- a/src/lib/corelib/parser/qmljsengine_p.h
+++ b/src/lib/corelib/parser/qmljsengine_p.h
@@ -56,7 +56,8 @@
#include "qmljsmemorypool_p.h"
#include <QtCore/qstring.h>
-#include <QtCore/qset.h>
+
+#include <set>
namespace QbsQmlJS {
diff --git a/src/lib/corelib/tools/set.h b/src/lib/corelib/tools/set.h
index 99954061a..f299ec71e 100644
--- a/src/lib/corelib/tools/set.h
+++ b/src/lib/corelib/tools/set.h
@@ -49,6 +49,7 @@
#include <algorithm>
#include <functional>
#include <iterator>
+#include <set>
#include <type_traits>
namespace qbs {
@@ -140,8 +141,9 @@ public:
QString toString() const;
static Set<T> fromList(const QList<T> &list);
+ static Set<T> fromStdSet(const std::set<T> &set);
QList<T> toList() const { return m_data.toList(); }
- QSet<T> toQSet() const;
+ std::set<T> toStdSet() const;
template<typename U> static Set<T> filtered(const Set<U> &s);
@@ -300,11 +302,18 @@ template<typename T> Set<T> Set<T>::fromList(const QList<T> &list)
return s;
}
-template<typename T> QSet<T> Set<T>::toQSet() const
+template<typename T> Set<T> Set<T>::fromStdSet(const std::set<T> &set)
{
- QSet<T> set;
+ Set<T> s;
+ std::copy(set.cbegin(), set.cend(), std::back_inserter(s.m_data));
+ return s;
+}
+
+template<typename T> std::set<T> Set<T>::toStdSet() const
+{
+ std::set<T> set;
for (auto it = cbegin(); it != cend(); ++it)
- set << *it;
+ set.insert(*it);
return set;
}
diff --git a/src/lib/corelib/tools/toolchains.cpp b/src/lib/corelib/tools/toolchains.cpp
index 28b00908b..b148fce87 100644
--- a/src/lib/corelib/tools/toolchains.cpp
+++ b/src/lib/corelib/tools/toolchains.cpp
@@ -39,7 +39,8 @@
#include "toolchains.h"
#include <QtCore/qmap.h>
-#include <QtCore/qset.h>
+
+#include <set>
namespace qbs {
diff --git a/src/lib/qtprofilesetup/qtmoduleinfo.cpp b/src/lib/qtprofilesetup/qtmoduleinfo.cpp
index 115099754..91215a9f2 100644
--- a/src/lib/qtprofilesetup/qtmoduleinfo.cpp
+++ b/src/lib/qtprofilesetup/qtmoduleinfo.cpp
@@ -43,6 +43,7 @@
#include <logging/translator.h>
#include <tools/error.h>
#include <tools/profile.h>
+#include <tools/set.h>
#include <QtCore/qdiriterator.h>
#include <QtCore/qfile.h>
@@ -160,7 +161,8 @@ QString QtModuleInfo::libNameForLinker(const QtEnvironment &qtEnvironment, bool
return libName;
}
-void QtModuleInfo::setupLibraries(const QtEnvironment &qtEnv, QSet<QString> *nonExistingPrlFiles)
+void QtModuleInfo::setupLibraries(const QtEnvironment &qtEnv,
+ Internal::Set<QString> *nonExistingPrlFiles)
{
setupLibraries(qtEnv, true, nonExistingPrlFiles);
setupLibraries(qtEnv, false, nonExistingPrlFiles);
@@ -172,7 +174,7 @@ static QStringList makeList(const QByteArray &s)
}
void QtModuleInfo::setupLibraries(const QtEnvironment &qtEnv, bool debugBuild,
- QSet<QString> *nonExistingPrlFiles)
+ Internal::Set<QString> *nonExistingPrlFiles)
{
if (!hasLibrary)
return; // Can happen for Qt4 convenience modules, like "widgets".
@@ -485,7 +487,7 @@ QList<QtModuleInfo> allQt4Modules(const QtEnvironment &qtEnvironment)
modules[i].mustExist = false;
}
- QSet<QString> nonExistingPrlFiles;
+ Internal::Set<QString> nonExistingPrlFiles;
for (int i = 0; i < modules.count(); ++i) {
QtModuleInfo &module = modules[i];
if (qtEnvironment.staticBuild)
@@ -531,7 +533,7 @@ static QList<QByteArray> getPriFileContentsRecursively(const Profile &profile,
QList<QtModuleInfo> allQt5Modules(const Profile &profile, const QtEnvironment &qtEnvironment)
{
- QSet<QString> nonExistingPrlFiles;
+ Internal::Set<QString> nonExistingPrlFiles;
QList<QtModuleInfo> modules;
QDirIterator dit(qtEnvironment.mkspecBasePath + QLatin1String("/modules"));
while (dit.hasNext()) {
diff --git a/src/lib/qtprofilesetup/qtmoduleinfo.h b/src/lib/qtprofilesetup/qtmoduleinfo.h
index 5d1b6d956..318b5608f 100644
--- a/src/lib/qtprofilesetup/qtmoduleinfo.h
+++ b/src/lib/qtprofilesetup/qtmoduleinfo.h
@@ -39,7 +39,6 @@
#ifndef QBS_QTMODULEINFO_H
#define QBS_QTMODULEINFO_H
-#include <QtCore/qset.h>
#include <QtCore/qstringlist.h>
namespace qbs {
@@ -48,6 +47,8 @@ class Profile;
namespace Internal {
+template<typename T> class Set;
+
class QtModuleInfo
{
public:
@@ -62,7 +63,7 @@ public:
QString libBaseName(const QString &libName, bool debugBuild,
const QtEnvironment &qtEnvironment) const;
QString libNameForLinker(const QtEnvironment &qtEnvironment, bool debugBuild) const;
- void setupLibraries(const QtEnvironment &qtEnv, QSet<QString> *nonExistingPrlFiles);
+ void setupLibraries(const QtEnvironment &qtEnv, Internal::Set<QString> *nonExistingPrlFiles);
bool isFramework(const QtEnvironment &qtEnv) const;
QString modulePrefix; // default is empty and means "Qt".
@@ -100,7 +101,7 @@ public:
private:
void setupLibraries(const QtEnvironment &qtEnv, bool debugBuild,
- QSet<QString> *nonExistingPrlFiles);
+ Internal::Set<QString> *nonExistingPrlFiles);
};
QList<QtModuleInfo> allQt4Modules(const QtEnvironment &qtEnvironment);
diff --git a/tests/auto/api/tst_api.cpp b/tests/auto/api/tst_api.cpp
index adb873e3e..eadbc1559 100644
--- a/tests/auto/api/tst_api.cpp
+++ b/tests/auto/api/tst_api.cpp
@@ -35,6 +35,7 @@
#include <tools/fileinfo.h>
#include <tools/hostosinfo.h>
#include <tools/qttools.h>
+#include <tools/set.h>
#include <tools/toolchains.h>
#include <QtCore/qcoreapplication.h>
@@ -1407,7 +1408,8 @@ void TestApi::listBuildSystemFiles()
m_logSink, 0));
waitForFinished(job.data());
QVERIFY2(!job->error().hasError(), qPrintable(job->error().toString()));
- const QSet<QString> buildSystemFiles = job->project().buildSystemFiles();
+ const auto buildSystemFiles = qbs::Internal::Set<QString>::fromStdSet(
+ job->project().buildSystemFiles());
QVERIFY(buildSystemFiles.contains(setupParams.projectFilePath()));
QVERIFY(buildSystemFiles.contains(setupParams.buildRoot() + "/subproject2/subproject2.qbs"));
QVERIFY(buildSystemFiles.contains(setupParams.buildRoot()