aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorIvan Komissarov <abbapoh@gmail.com>2019-11-29 01:22:04 +0100
committerIvan Komissarov <ABBAPOH@gmail.com>2020-01-08 10:23:10 +0000
commitee96a99b6551b09a5a6e74ebeb69da6300cc7f88 (patch)
tree48d3e852596e4fcb7f5091c74b376cfb6304fb90 /src
parent8ff1dd0044a32b6658cf05a923946d75baf33a66 (diff)
generators: Use QFlags to represent a "set" of architectures
This allows to avoid unneseccary allocations and use architecture "set" in a constexpr context Change-Id: I2352e899572978b3d1d7924e6f807b7441603aa7 Reviewed-by: Denis Shienkov <denis.shienkov@gmail.com> Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
Diffstat (limited to 'src')
-rw-r--r--src/lib/corelib/generators/generatorutils.h15
-rw-r--r--src/lib/corelib/generators/generatorversioninfo.cpp4
-rw-r--r--src/lib/corelib/generators/generatorversioninfo.h7
-rw-r--r--src/plugins/generator/iarew/iarewversioninfo.cpp2
-rw-r--r--src/plugins/generator/iarew/iarewversioninfo.h2
-rw-r--r--src/plugins/generator/keiluv/keiluvversioninfo.cpp2
-rw-r--r--src/plugins/generator/keiluv/keiluvversioninfo.h2
7 files changed, 18 insertions, 16 deletions
diff --git a/src/lib/corelib/generators/generatorutils.h b/src/lib/corelib/generators/generatorutils.h
index 9348ab18c..58e59cbf8 100644
--- a/src/lib/corelib/generators/generatorutils.h
+++ b/src/lib/corelib/generators/generatorutils.h
@@ -41,14 +41,17 @@ namespace gen {
namespace utils {
enum class Architecture {
- Arm,
- Avr,
- Mcs51,
- Stm8,
- Msp430,
- Unknown
+ Unknown = 0,
+ Arm = 1 << 1,
+ Avr = 1 << 2,
+ Mcs51 = 1 << 3,
+ Stm8 = 1 << 4,
+ Msp430 = 1 << 5
};
+Q_DECLARE_FLAGS(ArchitectureFlags, Architecture)
+Q_DECLARE_OPERATORS_FOR_FLAGS(ArchitectureFlags)
+
QBS_EXPORT QString architectureName(Architecture arch);
QBS_EXPORT Architecture architecture(const Project &qbsProject);
QBS_EXPORT QString buildConfigurationName(const Project &qbsProject);
diff --git a/src/lib/corelib/generators/generatorversioninfo.cpp b/src/lib/corelib/generators/generatorversioninfo.cpp
index 3e2106b57..26983bf06 100644
--- a/src/lib/corelib/generators/generatorversioninfo.cpp
+++ b/src/lib/corelib/generators/generatorversioninfo.cpp
@@ -43,7 +43,7 @@ namespace qbs {
namespace gen {
VersionInfo::VersionInfo(const Version &version,
- const std::set<utils::Architecture> &archs)
+ utils::ArchitectureFlags archs)
: m_version(version), m_archs(archs)
{
}
@@ -66,7 +66,7 @@ Version VersionInfo::version() const
bool VersionInfo::containsArchitecture(utils::Architecture arch) const
{
- return m_archs.find(arch) != m_archs.cend();
+ return m_archs & arch;
}
int VersionInfo::marketingVersion() const
diff --git a/src/lib/corelib/generators/generatorversioninfo.h b/src/lib/corelib/generators/generatorversioninfo.h
index 21d515411..93af4cab0 100644
--- a/src/lib/corelib/generators/generatorversioninfo.h
+++ b/src/lib/corelib/generators/generatorversioninfo.h
@@ -45,7 +45,7 @@
#include <tools/qbs_export.h>
#include <tools/version.h>
-#include <set>
+#include <QFlags>
namespace qbs {
namespace gen {
@@ -53,8 +53,7 @@ namespace gen {
class QBS_EXPORT VersionInfo
{
public:
- VersionInfo(const Version &version,
- const std::set<utils::Architecture> &archs);
+ VersionInfo(const Version &version, utils::ArchitectureFlags archs);
bool operator<(const VersionInfo &other) const;
bool operator==(const VersionInfo &other) const;
@@ -66,7 +65,7 @@ public:
private:
Version m_version;
- std::set<utils::Architecture> m_archs;
+ utils::ArchitectureFlags m_archs;
};
quint32 qHash(const VersionInfo &info);
diff --git a/src/plugins/generator/iarew/iarewversioninfo.cpp b/src/plugins/generator/iarew/iarewversioninfo.cpp
index d4df7a907..5b5dc7fb8 100644
--- a/src/plugins/generator/iarew/iarewversioninfo.cpp
+++ b/src/plugins/generator/iarew/iarewversioninfo.cpp
@@ -45,7 +45,7 @@ namespace qbs {
IarewVersionInfo::IarewVersionInfo(
const Version &version,
- const std::set<gen::utils::Architecture> &archs)
+ gen::utils::ArchitectureFlags archs)
: gen::VersionInfo(version, archs)
{
}
diff --git a/src/plugins/generator/iarew/iarewversioninfo.h b/src/plugins/generator/iarew/iarewversioninfo.h
index d55e8196a..65e2f08d9 100644
--- a/src/plugins/generator/iarew/iarewversioninfo.h
+++ b/src/plugins/generator/iarew/iarewversioninfo.h
@@ -49,7 +49,7 @@ class IarewVersionInfo final : public gen::VersionInfo
{
public:
IarewVersionInfo(const Version &version,
- const std::set<gen::utils::Architecture> &archs);
+ gen::utils::ArchitectureFlags archs);
static std::set<IarewVersionInfo> knownVersions();
};
diff --git a/src/plugins/generator/keiluv/keiluvversioninfo.cpp b/src/plugins/generator/keiluv/keiluvversioninfo.cpp
index 329bb5dd7..a0d264f49 100644
--- a/src/plugins/generator/keiluv/keiluvversioninfo.cpp
+++ b/src/plugins/generator/keiluv/keiluvversioninfo.cpp
@@ -46,7 +46,7 @@ namespace qbs {
KeiluvVersionInfo::KeiluvVersionInfo(
const Version &version,
- const std::set<gen::utils::Architecture> &archs)
+ gen::utils::ArchitectureFlags archs)
: gen::VersionInfo(version, archs)
{
}
diff --git a/src/plugins/generator/keiluv/keiluvversioninfo.h b/src/plugins/generator/keiluv/keiluvversioninfo.h
index 02a1af9e9..03eacfc09 100644
--- a/src/plugins/generator/keiluv/keiluvversioninfo.h
+++ b/src/plugins/generator/keiluv/keiluvversioninfo.h
@@ -49,7 +49,7 @@ class KeiluvVersionInfo final : public gen::VersionInfo
{
public:
KeiluvVersionInfo(const Version &version,
- const std::set<gen::utils::Architecture> &archs);
+ gen::utils::ArchitectureFlags archs);
static std::set<KeiluvVersionInfo> knownVersions();
};