aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEike Ziller <eike.ziller@qt.io>2020-06-17 09:14:47 +0200
committerEike Ziller <eike.ziller@qt.io>2020-06-18 05:58:23 +0000
commit1b431fe271e04b111d475654c7ea003981cba989 (patch)
tree4bd5590f83151e654a66279cc950d0c94424e3c0
parent5ebe34a33205199bd755283ed0a8c30870dadab8 (diff)
Move Id from Core to Utils
And add a compatibility wrapper for Core::Id, so we don't have to rename all occurrences from Core::Id to Utils::Id. This allows us to use Id also in Utils, which makes it possible to e.g. move Core::InfoBar to Utils without work arounds. Change-Id: I5555d05b4e52f09d501dbfe5d91252a982a97c61 Reviewed-by: Marco Bubke <marco.bubke@qt.io> Reviewed-by: Orgad Shaneh <orgads@gmail.com> Reviewed-by: David Schulz <david.schulz@qt.io> Reviewed-by: hjk <hjk@qt.io> Reviewed-by: Alessandro Portale <alessandro.portale@qt.io> Reviewed-by: André Hartmann <aha_1980@gmx.de>
-rw-r--r--src/libs/utils/CMakeLists.txt15
-rw-r--r--src/libs/utils/id.cpp (renamed from src/plugins/coreplugin/id.cpp)28
-rw-r--r--src/libs/utils/id.h92
-rw-r--r--src/libs/utils/utils-lib.pri6
-rw-r--r--src/libs/utils/utils.qbs2
-rw-r--r--src/plugins/autotest/qtest/qttest_utils.h1
-rw-r--r--src/plugins/autotest/quick/quicktest_utils.h2
-rw-r--r--src/plugins/autotest/testcodeparser.h4
-rw-r--r--src/plugins/autotest/testframeworkmanager.h2
-rw-r--r--src/plugins/autotest/testsettings.h8
-rw-r--r--src/plugins/baremetal/debugserverproviderchooser.h2
-rw-r--r--src/plugins/clangcodemodel/clangmodelmanagersupport.h1
-rw-r--r--src/plugins/cmakeprojectmanager/cmaketoolsettingsaccessor.h2
-rw-r--r--src/plugins/coreplugin/CMakeLists.txt2
-rw-r--r--src/plugins/coreplugin/actionmanager/commandbutton.h2
-rw-r--r--src/plugins/coreplugin/coreplugin.pro1
-rw-r--r--src/plugins/coreplugin/coreplugin.qbs1
-rw-r--r--src/plugins/coreplugin/dialogs/ioptionspage.h1
-rw-r--r--src/plugins/coreplugin/documentmanager.h1
-rw-r--r--src/plugins/coreplugin/editormanager/iexternaleditor.h2
-rw-r--r--src/plugins/coreplugin/find/optionspopup.h1
-rw-r--r--src/plugins/coreplugin/generatedfile.h1
-rw-r--r--src/plugins/coreplugin/id.h64
-rw-r--r--src/plugins/coreplugin/idocument.h2
-rw-r--r--src/plugins/coreplugin/idocumentfactory.h1
-rw-r--r--src/plugins/coreplugin/inavigationwidgetfactory.h1
-rw-r--r--src/plugins/coreplugin/locator/ilocatorfilter.h1
-rw-r--r--src/plugins/coreplugin/modemanager.h1
-rw-r--r--src/plugins/coreplugin/outputpane.h1
-rw-r--r--src/plugins/coreplugin/progressmanager/futureprogress.h2
-rw-r--r--src/plugins/coreplugin/rightpane.h1
-rw-r--r--src/plugins/coreplugin/vcsmanager.h2
-rw-r--r--src/plugins/cppeditor/cppminimizableinfobars.h3
-rw-r--r--src/plugins/debugger/loadcoredialog.h3
-rw-r--r--src/plugins/emacskeys/emacskeysplugin.h3
-rw-r--r--src/plugins/mcusupport/mcusupportoptions.h6
-rw-r--r--src/plugins/projectexplorer/devicesupport/devicefactoryselectiondialog.h4
-rw-r--r--src/plugins/projectexplorer/editorconfiguration.h3
-rw-r--r--src/plugins/projectexplorer/kitchooser.h2
-rw-r--r--src/plugins/projectexplorer/projectexplorer.h1
-rw-r--r--src/plugins/projectexplorer/projectwindow.h4
-rw-r--r--src/plugins/projectexplorer/targetsetuppage.h1
-rw-r--r--src/plugins/qmlprofiler/qmlprofilerattachdialog.h3
-rw-r--r--src/plugins/texteditor/codeassist/iassistprovider.h1
-rw-r--r--src/plugins/texteditor/icodestylepreferencesfactory.h3
-rw-r--r--src/plugins/texteditor/snippets/snippet.h4
-rw-r--r--src/plugins/texteditor/texteditoractionhandler.h3
-rw-r--r--src/plugins/vcsbase/vcsbaseclient.h4
-rw-r--r--src/plugins/vcsbase/vcsbaseplugin.h1
-rw-r--r--tests/unit/unittest/CMakeLists.txt2
50 files changed, 169 insertions, 135 deletions
diff --git a/src/libs/utils/CMakeLists.txt b/src/libs/utils/CMakeLists.txt
index 0fc4a4f1a2..198631c4ad 100644
--- a/src/libs/utils/CMakeLists.txt
+++ b/src/libs/utils/CMakeLists.txt
@@ -26,8 +26,8 @@ add_qtc_library(Utils
consoleprocess.cpp consoleprocess.h
cpplanguage_details.h
crumblepath.cpp crumblepath.h
- delegates.cpp delegates.h
declarationmacros.h
+ delegates.cpp delegates.h
detailsbutton.cpp detailsbutton.h
detailswidget.cpp detailswidget.h
differ.cpp differ.h
@@ -36,14 +36,9 @@ add_qtc_library(Utils
elfreader.cpp elfreader.h
elidinglabel.cpp elidinglabel.h
environment.cpp environment.h
- environmentfwd.h
environmentdialog.cpp environmentdialog.h
+ environmentfwd.h
environmentmodel.cpp environmentmodel.h
- namevaluedictionary.cpp namevaluedictionary.h
- namevalueitem.cpp namevalueitem.h
- namevaluemodel.cpp namevaluemodel.h
- namevaluesdialog.cpp namevaluesdialog.h
- namevaluevalidator.cpp namevaluevalidator.h
execmenu.cpp execmenu.h
executeondestruction.h
fadingindicator.cpp fadingindicator.h
@@ -70,6 +65,7 @@ add_qtc_library(Utils
hostosinfo.cpp hostosinfo.h
htmldocextractor.cpp htmldocextractor.h
icon.cpp icon.h
+ id.cpp id.h
infolabel.cpp infolabel.h
itemviews.cpp itemviews.h
json.cpp json.h
@@ -88,10 +84,15 @@ add_qtc_library(Utils
mimetypes/mimetype.cpp mimetypes/mimetype.h mimetypes/mimetype_p.h
mimetypes/mimetypeparser.cpp mimetypes/mimetypeparser_p.h
namevaluedictionary.cpp namevaluedictionary.h
+ namevaluedictionary.cpp namevaluedictionary.h
+ namevalueitem.cpp namevalueitem.h
namevalueitem.cpp namevalueitem.h
namevaluemodel.cpp namevaluemodel.h
+ namevaluemodel.cpp namevaluemodel.h
+ namevaluesdialog.cpp namevaluesdialog.h
namevaluesdialog.cpp namevaluesdialog.h
namevaluevalidator.cpp namevaluevalidator.h
+ namevaluevalidator.cpp namevaluevalidator.h
navigationtreeview.cpp navigationtreeview.h
networkaccessmanager.cpp networkaccessmanager.h
optional.h
diff --git a/src/plugins/coreplugin/id.cpp b/src/libs/utils/id.cpp
index 78bbab1aeb..26430a2938 100644
--- a/src/plugins/coreplugin/id.cpp
+++ b/src/libs/utils/id.cpp
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2016 The Qt Company Ltd.
+** Copyright (C) 2020 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of Qt Creator.
@@ -25,8 +25,8 @@
#include "id.h"
-#include <utils/algorithm.h>
-#include <utils/qtcassert.h>
+#include "algorithm.h"
+#include "qtcassert.h"
#include <QByteArray>
#include <QDataStream>
@@ -36,17 +36,17 @@
#include <string.h>
-namespace Core {
+namespace Utils {
/*!
- \class Core::Id
- \inheaderfile coreplugin/id.h
+ \class Utils::Id
+ \inheaderfile utils/id.h
\inmodule QtCreator
\brief The Id class encapsulates an identifier that is unique
within a specific running \QC process.
- \c{Core::Id} is used as facility to identify objects of interest
+ \c{Utils::Id} is used as facility to identify objects of interest
in a more typesafe and faster manner than a plain QString or
QByteArray would provide.
@@ -125,7 +125,7 @@ static quintptr theId(const QByteArray &ba)
}
/*!
- \fn Core::Id::Id(quintptr uid)
+ \fn Utils::Id::Id(quintptr uid)
\internal
Constructs an id given \a UID.
@@ -312,7 +312,7 @@ bool Id::operator==(const char *name) const
}
// For debugging purposes
-CORE_EXPORT const char *nameForId(quintptr id)
+QTCREATOR_UTILS_EXPORT const char *nameForId(quintptr id)
{
return stringFromId.value(id).str;
}
@@ -338,24 +338,24 @@ QString Id::suffixAfter(Id baseId) const
return n.startsWith(b) ? QString::fromUtf8(n.mid(b.size())) : QString();
}
-} // namespace Core
+} // namespace Utils
QT_BEGIN_NAMESPACE
-QDataStream &operator<<(QDataStream &ds, Core::Id id)
+QDataStream &operator<<(QDataStream &ds, Utils::Id id)
{
return ds << id.name();
}
-QDataStream &operator>>(QDataStream &ds, Core::Id &id)
+QDataStream &operator>>(QDataStream &ds, Utils::Id &id)
{
QByteArray ba;
ds >> ba;
- id = Core::Id::fromName(ba);
+ id = Utils::Id::fromName(ba);
return ds;
}
-QDebug operator<<(QDebug dbg, const Core::Id &id)
+QDebug operator<<(QDebug dbg, const Utils::Id &id)
{
return dbg << id.name();
}
diff --git a/src/libs/utils/id.h b/src/libs/utils/id.h
new file mode 100644
index 0000000000..f3658b4a94
--- /dev/null
+++ b/src/libs/utils/id.h
@@ -0,0 +1,92 @@
+/****************************************************************************
+**
+** Copyright (C) 2020 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of Qt Creator.
+**
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3 as published by the Free Software
+** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-3.0.html.
+**
+****************************************************************************/
+
+#pragma once
+
+#include "utils_global.h"
+
+#include <QMetaType>
+#include <QString>
+
+QT_BEGIN_NAMESPACE
+class QDataStream;
+class QVariant;
+QT_END_NAMESPACE
+
+namespace Utils {
+
+class QTCREATOR_UTILS_EXPORT Id
+{
+public:
+ Id() = default;
+ Id(const char *name); // Good to use.
+ Id(const QLatin1String &) = delete;
+
+ Id withSuffix(int suffix) const;
+ Id withSuffix(const char *suffix) const;
+ Id withSuffix(const QString &suffix) const;
+ Id withPrefix(const char *prefix) const;
+
+ QByteArray name() const;
+ QString toString() const; // Avoid.
+ QVariant toSetting() const; // Good to use.
+ QString suffixAfter(Id baseId) const;
+ bool isValid() const { return m_id; }
+ bool operator==(Id id) const { return m_id == id.m_id; }
+ bool operator==(const char *name) const;
+ bool operator!=(Id id) const { return m_id != id.m_id; }
+ bool operator!=(const char *name) const { return !operator==(name); }
+ bool operator<(Id id) const { return m_id < id.m_id; }
+ bool operator>(Id id) const { return m_id > id.m_id; }
+ bool alphabeticallyBefore(Id other) const;
+
+ quintptr uniqueIdentifier() const { return m_id; } // Avoid.
+ static Id fromString(const QString &str); // FIXME: avoid.
+ static Id fromName(const QByteArray &ba); // FIXME: avoid.
+ static Id fromSetting(const QVariant &variant); // Good to use.
+
+ static Id versionedId(const QByteArray &prefix, int major, int minor = -1);
+
+ static QSet<Id> fromStringList(const QStringList &list);
+ static QStringList toStringList(const QSet<Id> &ids);
+
+private:
+ explicit Id(quintptr uid) : m_id(uid) {}
+
+ quintptr m_id = 0;
+};
+
+inline uint qHash(Id id) { return static_cast<uint>(id.uniqueIdentifier()); }
+
+} // namespace Utils
+
+Q_DECLARE_METATYPE(Utils::Id)
+Q_DECLARE_METATYPE(QList<Utils::Id>)
+
+QT_BEGIN_NAMESPACE
+QTCREATOR_UTILS_EXPORT QDataStream &operator<<(QDataStream &ds, Utils::Id id);
+QTCREATOR_UTILS_EXPORT QDataStream &operator>>(QDataStream &ds, Utils::Id &id);
+QTCREATOR_UTILS_EXPORT QDebug operator<<(QDebug dbg, const Utils::Id &id);
+QT_END_NAMESPACE
diff --git a/src/libs/utils/utils-lib.pri b/src/libs/utils/utils-lib.pri
index 674df80bc6..27fcc75ffe 100644
--- a/src/libs/utils/utils-lib.pri
+++ b/src/libs/utils/utils-lib.pri
@@ -134,7 +134,8 @@ SOURCES += \
$$PWD/camelcasecursor.cpp \
$$PWD/infolabel.cpp \
$$PWD/overlaywidget.cpp \
- $$PWD/archive.cpp
+ $$PWD/archive.cpp \
+ $$PWD/id.cpp
HEADERS += \
$$PWD/environmentfwd.h \
@@ -285,7 +286,8 @@ HEADERS += \
$$PWD/camelcasecursor.h \
$$PWD/infolabel.h \
$$PWD/overlaywidget.h \
- $$PWD/archive.h
+ $$PWD/archive.h \
+ $$PWD/id.h
FORMS += $$PWD/filewizardpage.ui \
$$PWD/projectintropage.ui \
diff --git a/src/libs/utils/utils.qbs b/src/libs/utils/utils.qbs
index 312aa9dd75..554332590b 100644
--- a/src/libs/utils/utils.qbs
+++ b/src/libs/utils/utils.qbs
@@ -143,6 +143,8 @@ Project {
"htmldocextractor.h",
"icon.cpp",
"icon.h",
+ "id.cpp",
+ "id.h",
"infolabel.cpp",
"infolabel.h",
"itemviews.cpp",
diff --git a/src/plugins/autotest/qtest/qttest_utils.h b/src/plugins/autotest/qtest/qttest_utils.h
index 4d13df0d1e..b1156ff7ee 100644
--- a/src/plugins/autotest/qtest/qttest_utils.h
+++ b/src/plugins/autotest/qtest/qttest_utils.h
@@ -27,7 +27,6 @@
#include <QHash>
-namespace Core { class Id; }
namespace Utils { class Environment; }
namespace Autotest {
diff --git a/src/plugins/autotest/quick/quicktest_utils.h b/src/plugins/autotest/quick/quicktest_utils.h
index 8eca2a2569..3fc919ce67 100644
--- a/src/plugins/autotest/quick/quicktest_utils.h
+++ b/src/plugins/autotest/quick/quicktest_utils.h
@@ -27,8 +27,6 @@
#include <QHash>
-namespace Core { class Id; }
-
namespace Autotest {
class ITestFramework;
diff --git a/src/plugins/autotest/testcodeparser.h b/src/plugins/autotest/testcodeparser.h
index a480c78f81..977cac180b 100644
--- a/src/plugins/autotest/testcodeparser.h
+++ b/src/plugins/autotest/testcodeparser.h
@@ -34,10 +34,6 @@
#include <QFutureWatcher>
#include <QTimer>
-namespace Core {
-class Id;
-}
-
QT_BEGIN_NAMESPACE
class QThreadPool;
QT_END_NAMESPACE
diff --git a/src/plugins/autotest/testframeworkmanager.h b/src/plugins/autotest/testframeworkmanager.h
index 2975fb0c42..4655c331bc 100644
--- a/src/plugins/autotest/testframeworkmanager.h
+++ b/src/plugins/autotest/testframeworkmanager.h
@@ -31,8 +31,6 @@ QT_BEGIN_NAMESPACE
class QSettings;
QT_END_NAMESPACE
-namespace Core { class Id; }
-
namespace Autotest {
namespace Internal {
struct TestSettings;
diff --git a/src/plugins/autotest/testsettings.h b/src/plugins/autotest/testsettings.h
index e3279009b3..bf8b1d4e24 100644
--- a/src/plugins/autotest/testsettings.h
+++ b/src/plugins/autotest/testsettings.h
@@ -27,7 +27,9 @@
#include <QHash>
-namespace Core { class Id; }
+namespace Utils {
+class Id;
+}
QT_BEGIN_NAMESPACE
class QSettings;
@@ -60,8 +62,8 @@ struct TestSettings
bool popupOnFinish = true;
bool popupOnFail = false;
RunAfterBuildMode runAfterBuild = RunAfterBuildMode::None;
- QHash<Core::Id, bool> frameworks;
- QHash<Core::Id, bool> frameworksGrouping;
+ QHash<Utils::Id, bool> frameworks;
+ QHash<Utils::Id, bool> frameworksGrouping;
};
} // namespace Internal
diff --git a/src/plugins/baremetal/debugserverproviderchooser.h b/src/plugins/baremetal/debugserverproviderchooser.h
index 16ce4e94b8..13ffa96f39 100644
--- a/src/plugins/baremetal/debugserverproviderchooser.h
+++ b/src/plugins/baremetal/debugserverproviderchooser.h
@@ -32,8 +32,6 @@ class QComboBox;
class QPushButton;
QT_END_NAMESPACE
-namespace Core { class Id; }
-
namespace BareMetal {
namespace Internal {
diff --git a/src/plugins/clangcodemodel/clangmodelmanagersupport.h b/src/plugins/clangcodemodel/clangmodelmanagersupport.h
index e650e1f4f2..f7ac464f4a 100644
--- a/src/plugins/clangcodemodel/clangmodelmanagersupport.h
+++ b/src/plugins/clangcodemodel/clangmodelmanagersupport.h
@@ -42,7 +42,6 @@ QT_END_NAMESPACE
namespace Core {
class IDocument;
-class Id;
} // namespace Core
namespace TextEditor { class TextEditorWidget; }
namespace CppTools {
diff --git a/src/plugins/cmakeprojectmanager/cmaketoolsettingsaccessor.h b/src/plugins/cmakeprojectmanager/cmaketoolsettingsaccessor.h
index 0e85b43dfc..5837110f12 100644
--- a/src/plugins/cmakeprojectmanager/cmaketoolsettingsaccessor.h
+++ b/src/plugins/cmakeprojectmanager/cmaketoolsettingsaccessor.h
@@ -29,8 +29,6 @@
#include <coreplugin/id.h>
-namespace Core { class Id; }
-
namespace CMakeProjectManager {
class CMakeTool;
diff --git a/src/plugins/coreplugin/CMakeLists.txt b/src/plugins/coreplugin/CMakeLists.txt
index 66e8eff963..937a9b0bef 100644
--- a/src/plugins/coreplugin/CMakeLists.txt
+++ b/src/plugins/coreplugin/CMakeLists.txt
@@ -85,7 +85,7 @@ add_qtc_plugin(Core
helpmanager.cpp helpmanager.h helpmanager_implementation.h
icontext.cpp icontext.h
icore.cpp icore.h
- id.cpp id.h
+ id.h
idocument.cpp idocument.h
idocumentfactory.cpp idocumentfactory.h
ifilewizardextension.h
diff --git a/src/plugins/coreplugin/actionmanager/commandbutton.h b/src/plugins/coreplugin/actionmanager/commandbutton.h
index c34cbd61fe..1b7d27fcc7 100644
--- a/src/plugins/coreplugin/actionmanager/commandbutton.h
+++ b/src/plugins/coreplugin/actionmanager/commandbutton.h
@@ -26,6 +26,7 @@
#pragma once
#include <coreplugin/core_global.h>
+#include <coreplugin/id.h>
#include <QPointer>
#include <QString>
@@ -34,7 +35,6 @@
namespace Core {
class Command;
-class Id;
class CORE_EXPORT CommandButton : public QToolButton
{
diff --git a/src/plugins/coreplugin/coreplugin.pro b/src/plugins/coreplugin/coreplugin.pro
index 36c774a57e..cbcb94d074 100644
--- a/src/plugins/coreplugin/coreplugin.pro
+++ b/src/plugins/coreplugin/coreplugin.pro
@@ -20,7 +20,6 @@ SOURCES += corejsextensions.cpp \
fancytabwidget.cpp \
generalsettings.cpp \
themechooser.cpp \
- id.cpp \
icontext.cpp \
jsexpander.cpp \
messagemanager.cpp \
diff --git a/src/plugins/coreplugin/coreplugin.qbs b/src/plugins/coreplugin/coreplugin.qbs
index 3816c44113..55fbd945b0 100644
--- a/src/plugins/coreplugin/coreplugin.qbs
+++ b/src/plugins/coreplugin/coreplugin.qbs
@@ -92,7 +92,6 @@ Project {
"icontext.h",
"icore.cpp",
"icore.h",
- "id.cpp",
"id.h",
"idocument.cpp",
"idocument.h",
diff --git a/src/plugins/coreplugin/dialogs/ioptionspage.h b/src/plugins/coreplugin/dialogs/ioptionspage.h
index bef965628d..95145f13cd 100644
--- a/src/plugins/coreplugin/dialogs/ioptionspage.h
+++ b/src/plugins/coreplugin/dialogs/ioptionspage.h
@@ -25,6 +25,7 @@
#pragma once
+#include <coreplugin/core_global.h>
#include <coreplugin/id.h>
#include <utils/icon.h>
diff --git a/src/plugins/coreplugin/documentmanager.h b/src/plugins/coreplugin/documentmanager.h
index 9e11d7cf42..d31113cc76 100644
--- a/src/plugins/coreplugin/documentmanager.h
+++ b/src/plugins/coreplugin/documentmanager.h
@@ -25,6 +25,7 @@
#pragma once
+#include <coreplugin/core_global.h>
#include <coreplugin/id.h>
#include <QObject>
diff --git a/src/plugins/coreplugin/editormanager/iexternaleditor.h b/src/plugins/coreplugin/editormanager/iexternaleditor.h
index 97ca8c2760..9b91ece86d 100644
--- a/src/plugins/coreplugin/editormanager/iexternaleditor.h
+++ b/src/plugins/coreplugin/editormanager/iexternaleditor.h
@@ -26,6 +26,7 @@
#pragma once
#include <coreplugin/core_global.h>
+#include <coreplugin/id.h>
#include <utils/mimetypes/mimetype.h>
@@ -33,7 +34,6 @@
namespace Core {
-class Id;
class IExternalEditor;
using ExternalEditorList = QList<IExternalEditor *>;
diff --git a/src/plugins/coreplugin/find/optionspopup.h b/src/plugins/coreplugin/find/optionspopup.h
index 003280eb36..a427c511d0 100644
--- a/src/plugins/coreplugin/find/optionspopup.h
+++ b/src/plugins/coreplugin/find/optionspopup.h
@@ -25,6 +25,7 @@
#pragma once
+#include <coreplugin/core_global.h>
#include <coreplugin/id.h>
#include <QMap>
diff --git a/src/plugins/coreplugin/generatedfile.h b/src/plugins/coreplugin/generatedfile.h
index 7dd987d56f..bcb94eca09 100644
--- a/src/plugins/coreplugin/generatedfile.h
+++ b/src/plugins/coreplugin/generatedfile.h
@@ -25,6 +25,7 @@
#pragma once
+#include "core_global.h"
#include "id.h"
#include <QSharedDataPointer>
diff --git a/src/plugins/coreplugin/id.h b/src/plugins/coreplugin/id.h
index fc912da1b0..53a3a410fa 100644
--- a/src/plugins/coreplugin/id.h
+++ b/src/plugins/coreplugin/id.h
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2016 The Qt Company Ltd.
+** Copyright (C) 2020 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of Qt Creator.
@@ -25,68 +25,10 @@
#pragma once
-#include "core_global.h"
-
-#include <QMetaType>
-#include <QString>
-
-QT_BEGIN_NAMESPACE
-class QDataStream;
-class QVariant;
-QT_END_NAMESPACE
+#include <utils/id.h>
namespace Core {
-class CORE_EXPORT Id
-{
-public:
- Id() = default;
- Id(const char *name); // Good to use.
- Id(const QLatin1String &) = delete;
-
- Id withSuffix(int suffix) const;
- Id withSuffix(const char *suffix) const;
- Id withSuffix(const QString &suffix) const;
- Id withPrefix(const char *prefix) const;
-
- QByteArray name() const;
- QString toString() const; // Avoid.
- QVariant toSetting() const; // Good to use.
- QString suffixAfter(Id baseId) const;
- bool isValid() const { return m_id; }
- bool operator==(Id id) const { return m_id == id.m_id; }
- bool operator==(const char *name) const;
- bool operator!=(Id id) const { return m_id != id.m_id; }
- bool operator!=(const char *name) const { return !operator==(name); }
- bool operator<(Id id) const { return m_id < id.m_id; }
- bool operator>(Id id) const { return m_id > id.m_id; }
- bool alphabeticallyBefore(Id other) const;
-
- quintptr uniqueIdentifier() const { return m_id; } // Avoid.
- static Id fromString(const QString &str); // FIXME: avoid.
- static Id fromName(const QByteArray &ba); // FIXME: avoid.
- static Id fromSetting(const QVariant &variant); // Good to use.
-
- static Id versionedId(const QByteArray &prefix, int major, int minor = -1);
-
- static QSet<Id> fromStringList(const QStringList &list);
- static QStringList toStringList(const QSet<Id> &ids);
-
-private:
- explicit Id(quintptr uid) : m_id(uid) {}
-
- quintptr m_id = 0;
-};
-
-inline uint qHash(Id id) { return static_cast<uint>(id.uniqueIdentifier()); }
+using Id = Utils::Id;
} // namespace Core
-
-Q_DECLARE_METATYPE(Core::Id)
-Q_DECLARE_METATYPE(QList<Core::Id>)
-
-QT_BEGIN_NAMESPACE
-QDataStream &operator<<(QDataStream &ds, Core::Id id);
-QDataStream &operator>>(QDataStream &ds, Core::Id &id);
-CORE_EXPORT QDebug operator<<(QDebug dbg, const Core::Id &id);
-QT_END_NAMESPACE
diff --git a/src/plugins/coreplugin/idocument.h b/src/plugins/coreplugin/idocument.h
index feae466705..3e16881cf3 100644
--- a/src/plugins/coreplugin/idocument.h
+++ b/src/plugins/coreplugin/idocument.h
@@ -26,13 +26,13 @@
#pragma once
#include "core_global.h"
+#include "id.h"
#include <QObject>
namespace Utils { class FilePath; }
namespace Core {
-class Id;
class InfoBar;
namespace Internal {
diff --git a/src/plugins/coreplugin/idocumentfactory.h b/src/plugins/coreplugin/idocumentfactory.h
index 7534528c1f..d70d12b6e1 100644
--- a/src/plugins/coreplugin/idocumentfactory.h
+++ b/src/plugins/coreplugin/idocumentfactory.h
@@ -25,6 +25,7 @@
#pragma once
+#include "core_global.h"
#include "id.h"
#include <QObject>
diff --git a/src/plugins/coreplugin/inavigationwidgetfactory.h b/src/plugins/coreplugin/inavigationwidgetfactory.h
index f69687e517..55681a0bf7 100644
--- a/src/plugins/coreplugin/inavigationwidgetfactory.h
+++ b/src/plugins/coreplugin/inavigationwidgetfactory.h
@@ -25,6 +25,7 @@
#pragma once
+#include "core_global.h"
#include "id.h"
#include <QObject>
diff --git a/src/plugins/coreplugin/locator/ilocatorfilter.h b/src/plugins/coreplugin/locator/ilocatorfilter.h
index b98e8f9691..b87c1a0ac0 100644
--- a/src/plugins/coreplugin/locator/ilocatorfilter.h
+++ b/src/plugins/coreplugin/locator/ilocatorfilter.h
@@ -25,6 +25,7 @@
#pragma once
+#include <coreplugin/core_global.h>
#include <coreplugin/id.h>
#include <utils/optional.h>
diff --git a/src/plugins/coreplugin/modemanager.h b/src/plugins/coreplugin/modemanager.h
index 889731b49e..a3db404e99 100644
--- a/src/plugins/coreplugin/modemanager.h
+++ b/src/plugins/coreplugin/modemanager.h
@@ -25,6 +25,7 @@
#pragma once
+#include <coreplugin/core_global.h>
#include <coreplugin/id.h>
#include <QObject>
diff --git a/src/plugins/coreplugin/outputpane.h b/src/plugins/coreplugin/outputpane.h
index 7bc25d7a31..36b58458e3 100644
--- a/src/plugins/coreplugin/outputpane.h
+++ b/src/plugins/coreplugin/outputpane.h
@@ -25,6 +25,7 @@
#pragma once
+#include "core_global.h"
#include "id.h"
#include <QWidget>
diff --git a/src/plugins/coreplugin/progressmanager/futureprogress.h b/src/plugins/coreplugin/progressmanager/futureprogress.h
index 09b178dff2..d3748a072d 100644
--- a/src/plugins/coreplugin/progressmanager/futureprogress.h
+++ b/src/plugins/coreplugin/progressmanager/futureprogress.h
@@ -26,13 +26,13 @@
#pragma once
#include <coreplugin/core_global.h>
+#include <coreplugin/id.h>
#include <QString>
#include <QFuture>
#include <QWidget>
namespace Core {
-class Id;
class FutureProgressPrivate;
class CORE_EXPORT FutureProgress : public QWidget
diff --git a/src/plugins/coreplugin/rightpane.h b/src/plugins/coreplugin/rightpane.h
index ad9117509a..8b18fcd3c9 100644
--- a/src/plugins/coreplugin/rightpane.h
+++ b/src/plugins/coreplugin/rightpane.h
@@ -25,6 +25,7 @@
#pragma once
+#include "core_global.h"
#include "id.h"
#include <QWidget>
diff --git a/src/plugins/coreplugin/vcsmanager.h b/src/plugins/coreplugin/vcsmanager.h
index 6dacd20f58..9596801aba 100644
--- a/src/plugins/coreplugin/vcsmanager.h
+++ b/src/plugins/coreplugin/vcsmanager.h
@@ -26,13 +26,13 @@
#pragma once
#include "core_global.h"
+#include "id.h"
#include <QString>
#include <QObject>
namespace Core {
-class Id;
class IVersionControl;
namespace Internal { class MainWindow; }
diff --git a/src/plugins/cppeditor/cppminimizableinfobars.h b/src/plugins/cppeditor/cppminimizableinfobars.h
index f53c43c084..9425be54a3 100644
--- a/src/plugins/cppeditor/cppminimizableinfobars.h
+++ b/src/plugins/cppeditor/cppminimizableinfobars.h
@@ -25,6 +25,8 @@
#pragma once
+#include <coreplugin/id.h>
+
#include <QAction>
#include <QHash>
#include <QObject>
@@ -32,7 +34,6 @@
#include <functional>
namespace Core {
-class Id;
class InfoBar;
}
diff --git a/src/plugins/debugger/loadcoredialog.h b/src/plugins/debugger/loadcoredialog.h
index aaa04fdab3..ad8328cb15 100644
--- a/src/plugins/debugger/loadcoredialog.h
+++ b/src/plugins/debugger/loadcoredialog.h
@@ -25,9 +25,10 @@
#pragma once
+#include <coreplugin/id.h>
+
#include <QDialog>
-namespace Core { class Id; }
namespace ProjectExplorer { class Kit; }
namespace Utils { class FilePath; }
diff --git a/src/plugins/emacskeys/emacskeysplugin.h b/src/plugins/emacskeys/emacskeysplugin.h
index 5f8ba19235..d83b6b64f0 100644
--- a/src/plugins/emacskeys/emacskeysplugin.h
+++ b/src/plugins/emacskeys/emacskeysplugin.h
@@ -26,6 +26,8 @@
#include <extensionsystem/iplugin.h>
+#include <coreplugin/id.h>
+
#include <QTextCursor>
// forward declarations
@@ -33,7 +35,6 @@ QT_FORWARD_DECLARE_CLASS(QAction)
QT_FORWARD_DECLARE_CLASS(QPlainTextEdit)
namespace Core {
-class Id;
class IEditor;
}
namespace TextEditor {
diff --git a/src/plugins/mcusupport/mcusupportoptions.h b/src/plugins/mcusupport/mcusupportoptions.h
index cdc7d3a31a..3b4db43bb1 100644
--- a/src/plugins/mcusupport/mcusupportoptions.h
+++ b/src/plugins/mcusupport/mcusupportoptions.h
@@ -25,16 +25,14 @@
#pragma once
+#include <coreplugin/id.h>
+
#include <QObject>
#include <QVector>
#include <QVersionNumber>
QT_FORWARD_DECLARE_CLASS(QWidget)
-namespace Core {
-class Id;
-}
-
namespace Utils {
class FilePath;
class PathChooser;
diff --git a/src/plugins/projectexplorer/devicesupport/devicefactoryselectiondialog.h b/src/plugins/projectexplorer/devicesupport/devicefactoryselectiondialog.h
index f3bb2ac0f3..feda2dfc6d 100644
--- a/src/plugins/projectexplorer/devicesupport/devicefactoryselectiondialog.h
+++ b/src/plugins/projectexplorer/devicesupport/devicefactoryselectiondialog.h
@@ -25,9 +25,9 @@
#pragma once
-#include <QDialog>
+#include <coreplugin/id.h>
-namespace Core { class Id; }
+#include <QDialog>
namespace ProjectExplorer {
class IDeviceFactory;
diff --git a/src/plugins/projectexplorer/editorconfiguration.h b/src/plugins/projectexplorer/editorconfiguration.h
index e9c6138648..af9402a77b 100644
--- a/src/plugins/projectexplorer/editorconfiguration.h
+++ b/src/plugins/projectexplorer/editorconfiguration.h
@@ -27,6 +27,8 @@
#include "projectexplorer_export.h"
+#include <coreplugin/id.h>
+
#include <QObject>
#include <QVariantMap>
@@ -34,7 +36,6 @@
namespace Core {
class IEditor;
-class Id;
}
namespace TextEditor {
diff --git a/src/plugins/projectexplorer/kitchooser.h b/src/plugins/projectexplorer/kitchooser.h
index 046c18f571..06c346f55a 100644
--- a/src/plugins/projectexplorer/kitchooser.h
+++ b/src/plugins/projectexplorer/kitchooser.h
@@ -38,8 +38,6 @@ class QComboBox;
class QPushButton;
QT_END_NAMESPACE
-namespace Core { class Id; }
-
namespace ProjectExplorer {
// Let the user pick a kit.
diff --git a/src/plugins/projectexplorer/projectexplorer.h b/src/plugins/projectexplorer/projectexplorer.h
index 5f95965eb3..f5b300ed48 100644
--- a/src/plugins/projectexplorer/projectexplorer.h
+++ b/src/plugins/projectexplorer/projectexplorer.h
@@ -40,7 +40,6 @@ QT_END_NAMESPACE
namespace Core {
class IMode;
-class Id;
} // namespace Core
namespace Utils {
diff --git a/src/plugins/projectexplorer/projectwindow.h b/src/plugins/projectexplorer/projectwindow.h
index 01840951ab..00c5e0a6c9 100644
--- a/src/plugins/projectexplorer/projectwindow.h
+++ b/src/plugins/projectexplorer/projectwindow.h
@@ -27,12 +27,12 @@
#include "projectexplorer_export.h"
+#include <coreplugin/id.h>
+
#include <utils/fancymainwindow.h>
#include <memory>
-namespace Core { class Id; }
-
namespace ProjectExplorer {
namespace Internal {
diff --git a/src/plugins/projectexplorer/targetsetuppage.h b/src/plugins/projectexplorer/targetsetuppage.h
index 82c2404034..f5baa14ed3 100644
--- a/src/plugins/projectexplorer/targetsetuppage.h
+++ b/src/plugins/projectexplorer/targetsetuppage.h
@@ -40,7 +40,6 @@
QT_FORWARD_DECLARE_CLASS(QSpacerItem)
-namespace Core { class Id; }
namespace Utils { class FilePath; }
namespace ProjectExplorer {
diff --git a/src/plugins/qmlprofiler/qmlprofilerattachdialog.h b/src/plugins/qmlprofiler/qmlprofilerattachdialog.h
index d61576ace8..48e6fed4d6 100644
--- a/src/plugins/qmlprofiler/qmlprofilerattachdialog.h
+++ b/src/plugins/qmlprofiler/qmlprofilerattachdialog.h
@@ -25,9 +25,10 @@
#pragma once
+#include <coreplugin/id.h>
+
#include <QDialog>
-namespace Core { class Id; }
namespace ProjectExplorer { class Kit; }
namespace QmlProfiler {
diff --git a/src/plugins/texteditor/codeassist/iassistprovider.h b/src/plugins/texteditor/codeassist/iassistprovider.h
index 07ccb024c7..2be44a6746 100644
--- a/src/plugins/texteditor/codeassist/iassistprovider.h
+++ b/src/plugins/texteditor/codeassist/iassistprovider.h
@@ -29,7 +29,6 @@
#include <QObject>
-namespace Core { class Id; }
namespace TextEditor {
class IAssistProcessor;
diff --git a/src/plugins/texteditor/icodestylepreferencesfactory.h b/src/plugins/texteditor/icodestylepreferencesfactory.h
index 4d8cddc1b1..d611024626 100644
--- a/src/plugins/texteditor/icodestylepreferencesfactory.h
+++ b/src/plugins/texteditor/icodestylepreferencesfactory.h
@@ -29,9 +29,10 @@
#include "indenter.h"
+#include <coreplugin/id.h>
+
#include <QWidget>
-namespace Core { class Id; }
namespace TextEditor {
class ICodeStylePreferences;
diff --git a/src/plugins/texteditor/snippets/snippet.h b/src/plugins/texteditor/snippets/snippet.h
index 3191000b54..620b1f0911 100644
--- a/src/plugins/texteditor/snippets/snippet.h
+++ b/src/plugins/texteditor/snippets/snippet.h
@@ -27,12 +27,12 @@
#include <texteditor/texteditor_global.h>
+#include <coreplugin/id.h>
+
#include <QChar>
#include <QList>
#include <QString>
-namespace Core { class Id; }
-
namespace TextEditor {
class TEXTEDITOR_EXPORT NameMangler
diff --git a/src/plugins/texteditor/texteditoractionhandler.h b/src/plugins/texteditor/texteditoractionhandler.h
index 3e58f72952..e32c3ae0b0 100644
--- a/src/plugins/texteditor/texteditoractionhandler.h
+++ b/src/plugins/texteditor/texteditoractionhandler.h
@@ -27,12 +27,13 @@
#include "texteditor_global.h"
+#include <coreplugin/id.h>
+
#include <QObject>
#include <functional>
namespace Core {
-class Id;
class IEditor;
}
diff --git a/src/plugins/vcsbase/vcsbaseclient.h b/src/plugins/vcsbase/vcsbaseclient.h
index 3f2f9b13d5..d5b43759ab 100644
--- a/src/plugins/vcsbase/vcsbaseclient.h
+++ b/src/plugins/vcsbase/vcsbaseclient.h
@@ -27,6 +27,8 @@
#include "vcsbase_global.h"
+#include <coreplugin/id.h>
+
#include <utils/fileutils.h>
#include <utils/synchronousprocess.h>
@@ -42,8 +44,6 @@ class QProcessEnvironment;
class QToolBar;
QT_END_NAMESPACE
-namespace Core { class Id; }
-
namespace VcsBase {
class VcsCommand;
diff --git a/src/plugins/vcsbase/vcsbaseplugin.h b/src/plugins/vcsbase/vcsbaseplugin.h
index 7174c295f4..d1fc51bae5 100644
--- a/src/plugins/vcsbase/vcsbaseplugin.h
+++ b/src/plugins/vcsbase/vcsbaseplugin.h
@@ -49,7 +49,6 @@ class SynchronousProcessResponse;
namespace Core {
class Context;
class IVersionControl;
-class Id;
class IDocument;
} // namespace Core
diff --git a/tests/unit/unittest/CMakeLists.txt b/tests/unit/unittest/CMakeLists.txt
index 8ab617541e..9ae0b9c9a9 100644
--- a/tests/unit/unittest/CMakeLists.txt
+++ b/tests/unit/unittest/CMakeLists.txt
@@ -349,7 +349,7 @@ extend_qtc_test(unittest
DEFINES CORE_STATIC_LIBRARY
SOURCES
coreicons.cpp coreicons.h
- id.cpp id.h
+ id.h
find/ifindfilter.cpp find/ifindfilter.h
locator/ilocatorfilter.cpp locator/ilocatorfilter.h
)