diff options
author | Ivan Komissarov <abbapoh@gmail.com> | 2019-11-29 01:22:04 +0100 |
---|---|---|
committer | Ivan Komissarov <ABBAPOH@gmail.com> | 2020-01-08 10:23:10 +0000 |
commit | ee96a99b6551b09a5a6e74ebeb69da6300cc7f88 (patch) | |
tree | 48d3e852596e4fcb7f5091c74b376cfb6304fb90 | |
parent | 8ff1dd0044a32b6658cf05a923946d75baf33a66 (diff) | |
download | qbs-ee96a99b6551b09a5a6e74ebeb69da6300cc7f88.tar.gz |
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>
-rw-r--r-- | src/lib/corelib/generators/generatorutils.h | 15 | ||||
-rw-r--r-- | src/lib/corelib/generators/generatorversioninfo.cpp | 4 | ||||
-rw-r--r-- | src/lib/corelib/generators/generatorversioninfo.h | 7 | ||||
-rw-r--r-- | src/plugins/generator/iarew/iarewversioninfo.cpp | 2 | ||||
-rw-r--r-- | src/plugins/generator/iarew/iarewversioninfo.h | 2 | ||||
-rw-r--r-- | src/plugins/generator/keiluv/keiluvversioninfo.cpp | 2 | ||||
-rw-r--r-- | src/plugins/generator/keiluv/keiluvversioninfo.h | 2 |
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(); }; |