forked from qt-creator/qt-creator
coreplugin: introduce an 'Id' class, intended as successor for generic QStrings
to identify actions etc.
This commit is contained in:
@@ -44,12 +44,12 @@ UniqueIDManager::~UniqueIDManager()
|
|||||||
m_instance = 0;
|
m_instance = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool UniqueIDManager::hasUniqueIdentifier(const QString &id) const
|
bool UniqueIDManager::hasUniqueIdentifier(const Id &id) const
|
||||||
{
|
{
|
||||||
return m_uniqueIdentifiers.contains(id);
|
return m_uniqueIdentifiers.contains(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
int UniqueIDManager::uniqueIdentifier(const QString &id)
|
int UniqueIDManager::uniqueIdentifier(const Id &id)
|
||||||
{
|
{
|
||||||
if (hasUniqueIdentifier(id))
|
if (hasUniqueIdentifier(id))
|
||||||
return m_uniqueIdentifiers.value(id);
|
return m_uniqueIdentifiers.value(id);
|
||||||
@@ -69,13 +69,13 @@ QString UniqueIDManager::stringForUniqueIdentifier(int uid)
|
|||||||
|
|
||||||
static int toId(const char *id)
|
static int toId(const char *id)
|
||||||
{
|
{
|
||||||
return UniqueIDManager::instance()->uniqueIdentifier(QLatin1String(id));
|
return UniqueIDManager::instance()->uniqueIdentifier(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
Context::Context(const char *id, int offset)
|
Context::Context(const char *id, int offset)
|
||||||
{
|
{
|
||||||
d.append(UniqueIDManager::instance()
|
d.append(UniqueIDManager::instance()
|
||||||
-> uniqueIdentifier(QString(id) + QString::number(offset)));
|
-> uniqueIdentifier(Id(QString(id) + QString::number(offset))));
|
||||||
}
|
}
|
||||||
|
|
||||||
void Context::add(const char *id)
|
void Context::add(const char *id)
|
||||||
|
|||||||
@@ -37,6 +37,36 @@
|
|||||||
|
|
||||||
namespace Core {
|
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
|
class CORE_EXPORT UniqueIDManager
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
@@ -45,12 +75,12 @@ public:
|
|||||||
|
|
||||||
static UniqueIDManager *instance() { return m_instance; }
|
static UniqueIDManager *instance() { return m_instance; }
|
||||||
|
|
||||||
bool hasUniqueIdentifier(const QString &id) const;
|
bool hasUniqueIdentifier(const Id &id) const;
|
||||||
int uniqueIdentifier(const QString &id);
|
int uniqueIdentifier(const Id &id);
|
||||||
QString stringForUniqueIdentifier(int uid);
|
QString stringForUniqueIdentifier(int uid);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QHash<QString, int> m_uniqueIdentifiers;
|
QHash<Id, int> m_uniqueIdentifiers;
|
||||||
static UniqueIDManager *m_instance;
|
static UniqueIDManager *m_instance;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user