diff --git a/src/plugins/coreplugin/featureprovider.h b/src/plugins/coreplugin/featureprovider.h index 8155653fa10..61690966791 100644 --- a/src/plugins/coreplugin/featureprovider.h +++ b/src/plugins/coreplugin/featureprovider.h @@ -55,32 +55,30 @@ public: class CORE_EXPORT Feature : public Id { public: - Feature(Id id) : Id(id) {} + Feature() = default; + template Feature(const char(&ch)[N]) : Id(ch) { } + + static Feature fromString(const QString &str) { return Feature(Id::fromString(str)); } + static Feature fromName(const QByteArray &ba) { return Feature(Id::fromName(ba)); } + +private: + explicit Feature(const Id id) : Id(id) { } }; class CORE_EXPORT FeatureSet : private QSet { public: - FeatureSet() {} - - FeatureSet(Id id) + explicit FeatureSet(Feature id) { if (id.isValid()) insert(id); } - FeatureSet(const FeatureSet &other) : QSet(other) {} + FeatureSet() = default; + FeatureSet(const FeatureSet &other) = default; + FeatureSet &operator=(const FeatureSet &other) = default; - FeatureSet &operator=(const FeatureSet &other) - { - QSet::operator=(other); - return *this; - } - - bool isEmpty() const - { - return QSet::isEmpty(); - } + using QSet::isEmpty; bool contains(const Feature &feature) const { @@ -144,7 +142,7 @@ public: { FeatureSet features; foreach (const QString &i, list) - features |= Feature(Id::fromString(i)); + features |= Feature::fromString(i); return features; } }; diff --git a/src/plugins/designer/cpp/formclasswizard.cpp b/src/plugins/designer/cpp/formclasswizard.cpp index e728b4c2caa..558d92d6d1a 100644 --- a/src/plugins/designer/cpp/formclasswizard.cpp +++ b/src/plugins/designer/cpp/formclasswizard.cpp @@ -43,7 +43,7 @@ namespace Internal { FormClassWizard::FormClassWizard() { - setRequiredFeatures(Core::Feature(QtSupport::Constants::FEATURE_QWIDGETS)); + setRequiredFeatures(Core::FeatureSet(QtSupport::Constants::FEATURE_QWIDGETS)); } QString FormClassWizard::headerSuffix() const diff --git a/src/plugins/projectexplorer/customwizard/customwizardparameters.cpp b/src/plugins/projectexplorer/customwizard/customwizardparameters.cpp index a9a93bf8686..86e9c3658e9 100644 --- a/src/plugins/projectexplorer/customwizard/customwizardparameters.cpp +++ b/src/plugins/projectexplorer/customwizard/customwizardparameters.cpp @@ -461,10 +461,8 @@ static inline FeatureSet readRequiredFeatures(const QXmlStreamReader &reader) QString value = reader.attributes().value(QLatin1String(featuresRequiredC)).toString(); QStringList stringList = value.split(QLatin1Char(','), QString::SkipEmptyParts); FeatureSet features; - foreach (const QString &string, stringList) { - Feature feature(Id::fromString(string)); - features |= feature; - } + foreach (const QString &string, stringList) + features |= Feature::fromString(string); return features; } diff --git a/src/plugins/projectexplorer/jsonwizard/jsonkitspage.cpp b/src/plugins/projectexplorer/jsonwizard/jsonkitspage.cpp index 647384cec80..c8ec2532b89 100644 --- a/src/plugins/projectexplorer/jsonwizard/jsonkitspage.cpp +++ b/src/plugins/projectexplorer/jsonwizard/jsonkitspage.cpp @@ -167,7 +167,7 @@ QVector JsonKitsPage::parseFeatures(const QVar foreach (const QVariant &element, data.toList()) { if (element.type() == QVariant::String) { - result.append({ Id::fromString(element.toString()), QVariant(true) }); + result.append({ Feature::fromString(element.toString()), QVariant(true) }); } else if (element.type() == QVariant::Map) { const QVariantMap obj = element.toMap(); const QString feature = obj.value(QLatin1String(KEY_FEATURE)).toString(); @@ -177,7 +177,7 @@ QVector JsonKitsPage::parseFeatures(const QVar return QVector(); } - result.append({ Id::fromString(feature), obj.value(QLatin1String(KEY_CONDITION), true) }); + result.append({ Feature::fromString(feature), obj.value(QLatin1String(KEY_CONDITION), true) }); } else { if (errorMessage) *errorMessage = tr("Feature list element is not a string or object."); diff --git a/src/plugins/projectexplorer/jsonwizard/jsonkitspage.h b/src/plugins/projectexplorer/jsonwizard/jsonkitspage.h index c2e56112268..1f21b80aedf 100644 --- a/src/plugins/projectexplorer/jsonwizard/jsonkitspage.h +++ b/src/plugins/projectexplorer/jsonwizard/jsonkitspage.h @@ -57,7 +57,7 @@ public: class ConditionalFeature { public: - ConditionalFeature() : feature(Core::Id()) { } + ConditionalFeature() = default; ConditionalFeature(const Core::Feature &f, const QVariant &c) : feature(f), condition(c) { } diff --git a/src/plugins/projectexplorer/kitinformation.cpp b/src/plugins/projectexplorer/kitinformation.cpp index 0d4a5eb9842..19ef2a939b2 100644 --- a/src/plugins/projectexplorer/kitinformation.cpp +++ b/src/plugins/projectexplorer/kitinformation.cpp @@ -346,7 +346,7 @@ Core::FeatureSet DeviceTypeKitInformation::availableFeatures(const Kit *k) const Core::Id id = DeviceTypeKitInformation::deviceTypeId(k); Core::FeatureSet result; if (id.isValid()) - result |= Core::Feature(Core::Id::fromString(QString::fromLatin1("DeviceType.") + id.toString())); + result |= Core::Feature::fromString(QString::fromLatin1("DeviceType.") + id.toString()); return result; } diff --git a/src/plugins/qmakeprojectmanager/customwidgetwizard/customwidgetwizard.cpp b/src/plugins/qmakeprojectmanager/customwidgetwizard/customwidgetwizard.cpp index d0308aff001..480d585e545 100644 --- a/src/plugins/qmakeprojectmanager/customwidgetwizard/customwidgetwizard.cpp +++ b/src/plugins/qmakeprojectmanager/customwidgetwizard/customwidgetwizard.cpp @@ -52,7 +52,7 @@ CustomWidgetWizard::CustomWidgetWizard() setDisplayName(tr("Qt Custom Designer Widget")); setDescription(tr("Creates a Qt Custom Designer Widget or a Custom Widget Collection.")); setIcon(QIcon(QLatin1String(":/wizards/images/gui.png"))); - setRequiredFeatures(Core::Feature(QtSupport::Constants::FEATURE_QWIDGETS)); + setRequiredFeatures(Core::FeatureSet(QtSupport::Constants::FEATURE_QWIDGETS)); } Core::BaseFileWizard *CustomWidgetWizard::create(QWidget *parent, const Core::WizardDialogParameters ¶meters) const diff --git a/src/plugins/qmakeprojectmanager/wizards/guiappwizard.cpp b/src/plugins/qmakeprojectmanager/wizards/guiappwizard.cpp index f0092950ad6..b0921cc9e1f 100644 --- a/src/plugins/qmakeprojectmanager/wizards/guiappwizard.cpp +++ b/src/plugins/qmakeprojectmanager/wizards/guiappwizard.cpp @@ -83,7 +83,7 @@ GuiAppWizard::GuiAppWizard() "Includes a Qt Designer-based main window.\n\n" "Preselects a desktop Qt for building the application if available.")); setIcon(QIcon(QLatin1String(":/wizards/images/gui.png"))); - setRequiredFeatures(Core::Feature(QtSupport::Constants::FEATURE_QWIDGETS)); + setRequiredFeatures(Core::FeatureSet(QtSupport::Constants::FEATURE_QWIDGETS)); } Core::BaseFileWizard *GuiAppWizard::create(QWidget *parent, const Core::WizardDialogParameters ¶meters) const diff --git a/src/plugins/qmakeprojectmanager/wizards/librarywizard.cpp b/src/plugins/qmakeprojectmanager/wizards/librarywizard.cpp index 3e10554ba59..b35b10311cd 100644 --- a/src/plugins/qmakeprojectmanager/wizards/librarywizard.cpp +++ b/src/plugins/qmakeprojectmanager/wizards/librarywizard.cpp @@ -56,7 +56,7 @@ LibraryWizard::LibraryWizard() "
  • a shared C++ library for use with QPluginLoader and runtime (Plugins)
  • " "
  • a shared or static C++ library for use with another project at linktime
  • ")); setIcon(QIcon(QLatin1String(":/wizards/images/lib.png"))); - setRequiredFeatures(Core::Feature(QtSupport::Constants::FEATURE_QT)); + setRequiredFeatures(Core::FeatureSet(QtSupport::Constants::FEATURE_QT)); } Core::BaseFileWizard *LibraryWizard::create(QWidget *parent, const Core::WizardDialogParameters ¶meters) const diff --git a/src/plugins/qmakeprojectmanager/wizards/subdirsprojectwizard.cpp b/src/plugins/qmakeprojectmanager/wizards/subdirsprojectwizard.cpp index 07c46b2d0dd..01038647bff 100644 --- a/src/plugins/qmakeprojectmanager/wizards/subdirsprojectwizard.cpp +++ b/src/plugins/qmakeprojectmanager/wizards/subdirsprojectwizard.cpp @@ -51,7 +51,7 @@ SubdirsProjectWizard::SubdirsProjectWizard() setDescription(tr("Creates a qmake-based subdirs project. This allows you to group " "your projects in a tree structure.")); setIcon(QIcon(QLatin1String(":/wizards/images/gui.png"))); - setRequiredFeatures(Core::Feature(QtSupport::Constants::FEATURE_QT)); + setRequiredFeatures(Core::FeatureSet(QtSupport::Constants::FEATURE_QT)); } Core::BaseFileWizard *SubdirsProjectWizard::create(QWidget *parent, diff --git a/src/plugins/qtsupport/baseqtversion.cpp b/src/plugins/qtsupport/baseqtversion.cpp index bca68d01341..e642c83f818 100644 --- a/src/plugins/qtsupport/baseqtversion.cpp +++ b/src/plugins/qtsupport/baseqtversion.cpp @@ -102,9 +102,9 @@ FeatureSet QtVersionNumber::features() const result |= Feature(Constants::FEATURE_QT); if (majorVersion >= 0) { QString featureMajor = QString::fromLatin1(Constants::FEATURE_QT) + QString::number(majorVersion); - result |= Feature(Id::fromString(featureMajor)); + result |= Feature::fromString(featureMajor); for (int i = 0; i <= minorVersion; ++i) - result |= Feature(Id::fromString(featureMajor + QLatin1Char('.') + QString::number(i))); + result |= Feature::fromString(featureMajor + QLatin1Char('.') + QString::number(i)); } return result; }