From 2d6ad5694e9f8982baa748aaf08adb9205563a96 Mon Sep 17 00:00:00 2001 From: hjk <qtc-committer@nokia.com> Date: Fri, 10 Sep 2010 13:06:01 +0200 Subject: [PATCH] coreplugin: introduce an 'Id' class, intended as successor for generic QStrings to identify actions etc. --- src/plugins/coreplugin/uniqueidmanager.cpp | 8 ++--- src/plugins/coreplugin/uniqueidmanager.h | 36 ++++++++++++++++++++-- 2 files changed, 37 insertions(+), 7 deletions(-) diff --git a/src/plugins/coreplugin/uniqueidmanager.cpp b/src/plugins/coreplugin/uniqueidmanager.cpp index f2dee8ff711..25332118c5e 100644 --- a/src/plugins/coreplugin/uniqueidmanager.cpp +++ b/src/plugins/coreplugin/uniqueidmanager.cpp @@ -44,12 +44,12 @@ UniqueIDManager::~UniqueIDManager() m_instance = 0; } -bool UniqueIDManager::hasUniqueIdentifier(const QString &id) const +bool UniqueIDManager::hasUniqueIdentifier(const Id &id) const { return m_uniqueIdentifiers.contains(id); } -int UniqueIDManager::uniqueIdentifier(const QString &id) +int UniqueIDManager::uniqueIdentifier(const Id &id) { if (hasUniqueIdentifier(id)) return m_uniqueIdentifiers.value(id); @@ -69,13 +69,13 @@ QString UniqueIDManager::stringForUniqueIdentifier(int uid) static int toId(const char *id) { - return UniqueIDManager::instance()->uniqueIdentifier(QLatin1String(id)); + return UniqueIDManager::instance()->uniqueIdentifier(id); } Context::Context(const char *id, int offset) { d.append(UniqueIDManager::instance() - -> uniqueIdentifier(QString(id) + QString::number(offset))); + -> uniqueIdentifier(Id(QString(id) + QString::number(offset)))); } void Context::add(const char *id) diff --git a/src/plugins/coreplugin/uniqueidmanager.h b/src/plugins/coreplugin/uniqueidmanager.h index e8d7f0db484..6b05cdb0b21 100644 --- a/src/plugins/coreplugin/uniqueidmanager.h +++ b/src/plugins/coreplugin/uniqueidmanager.h @@ -37,6 +37,36 @@ namespace Core { +// FIXME: The intention is to use this class instead of the +// generic QString to identify actions. + +class CORE_EXPORT Id +{ +public: + Id() {} + Id(const char *name) : m_name(QLatin1String(name)) {} + // FIXME: Replace with QByteArray + Id(const QString &name) : m_name(name) {} + // FIXME: Remove. + operator QString() const { return m_name; } + // FIXME: Replace with QByteArray + QString name() const { return m_name; } + bool isValid() const { return !m_name.isEmpty(); } + bool operator==(const Id &id) const { return m_name == id.m_name; } + bool operator!=(const Id &id) const { return m_name != id.m_name; } + +private: + // Intentionally unimplemented + Id(const QLatin1String &); + // FIXME: Replace with QByteArray + QString m_name; +}; + +inline uint qHash(const Id &id) +{ + return qHash(id.name()); +} + class CORE_EXPORT UniqueIDManager { public: @@ -45,12 +75,12 @@ public: static UniqueIDManager *instance() { return m_instance; } - bool hasUniqueIdentifier(const QString &id) const; - int uniqueIdentifier(const QString &id); + bool hasUniqueIdentifier(const Id &id) const; + int uniqueIdentifier(const Id &id); QString stringForUniqueIdentifier(int uid); private: - QHash<QString, int> m_uniqueIdentifiers; + QHash<Id, int> m_uniqueIdentifiers; static UniqueIDManager *m_instance; }; -- GitLab