aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib/corelib/generators
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/lib/corelib/generators
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/lib/corelib/generators')
-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
3 files changed, 14 insertions, 12 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);