aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib/corelib/generators
diff options
context:
space:
mode:
authorJake Petroules <jake.petroules@qt.io>2017-06-28 18:33:54 -0700
committerJake Petroules <jake.petroules@qt.io>2017-09-01 18:25:54 +0000
commitd85aa0fa31a74d5ce102b9887634f217ff944425 (patch)
tree55fdfa1976afd4a95b62e4866d491127d8ff88bd /src/lib/corelib/generators
parent4202dfe7f4359634aeb0422da4b5f852ebf90985 (diff)
Generator data: add some utility methods for iterating configurations
These will be used in a subsequent commit. Change-Id: I004da66d0cb334d6de3083d63c85d153403fd56b Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
Diffstat (limited to 'src/lib/corelib/generators')
-rw-r--r--src/lib/corelib/generators/generatordata.h80
1 files changed, 80 insertions, 0 deletions
diff --git a/src/lib/corelib/generators/generatordata.h b/src/lib/corelib/generators/generatordata.h
index 0db041507..21e8a1ab4 100644
--- a/src/lib/corelib/generators/generatordata.h
+++ b/src/lib/corelib/generators/generatordata.h
@@ -68,6 +68,41 @@ template <typename U> struct IMultiplexableContainer {
return value;
}
+ void forEach(const std::function<void(const QString &configurationName,
+ const U &data)> &func) const
+ {
+ QMapIterator<QString, U> it(data);
+ while (it.hasNext()) {
+ it.next();
+ func(it.key(), it.value());
+ }
+ }
+
+ void forEach(const std::function<void(const std::string &configurationName,
+ const U &data)> &func) const
+ {
+ QMapIterator<QString, U> it(data);
+ while (it.hasNext()) {
+ it.next();
+ func(it.key().toStdString(), it.value());
+ }
+ }
+
+ const U operator[](const QString &configurationName)
+ {
+ return data[configurationName];
+ }
+
+ const U operator[](const std::string &configurationName)
+ {
+ return data[QString::fromStdString(configurationName)];
+ }
+
+ bool isValid() const
+ {
+ return !data.isEmpty();
+ }
+
protected:
IMultiplexableContainer() { }
};
@@ -107,6 +142,51 @@ struct QBS_EXPORT GeneratableProject : public GeneratableProjectData {
QFileInfo filePath() const;
bool hasMultipleConfigurations() const;
QStringList commandLine() const;
+
+ void forEach(const std::function<void(const QString &configurationName,
+ const Project &data)> &func) const
+ {
+ QMapIterator<QString, Project> it(projects);
+ while (it.hasNext()) {
+ it.next();
+ func(it.key(), it.value());
+ }
+ }
+
+ void forEach(const std::function<void(const std::string &configurationName,
+ const Project &data)> &func) const
+ {
+ QMapIterator<QString, Project> it(projects);
+ while (it.hasNext()) {
+ it.next();
+ func(it.key().toStdString(), it.value());
+ }
+ }
+
+ const Project operator[](const QString &configurationName) const
+ {
+ return projects[configurationName];
+ }
+
+ const Project operator[](const std::string &configurationName) const
+ {
+ return projects[QString::fromStdString(configurationName)];
+ }
+
+ bool isValid() const
+ {
+ return !data.isEmpty() && !projects.isEmpty();
+ }
+
+ const ProjectData projectData(const QString &configurationName) const
+ {
+ return data[configurationName];
+ }
+
+ const ProjectData projectData(const std::string &configurationName) const
+ {
+ return data[QString::fromStdString(configurationName)];
+ }
};
} // namespace qbs