ToolChainFactory: Add typeIdFromMap and use it in factories

Change-Id: Id3254bcb3a5c426540bbab49dc61545031af6826
Reviewed-by: Daniel Teske <daniel.teske@theqtcompany.com>
This commit is contained in:
Tobias Hunger
2015-07-07 14:20:12 +02:00
parent 468337c56b
commit 6d81730764
9 changed files with 28 additions and 16 deletions

View File

@@ -271,7 +271,7 @@ QList<ToolChain *> AndroidToolChainFactory::autoDetect()
bool AndroidToolChainFactory::canRestore(const QVariantMap &data) bool AndroidToolChainFactory::canRestore(const QVariantMap &data)
{ {
return idFromMap(data).startsWith(QByteArray(Constants::ANDROID_TOOLCHAIN_ID) + ':'); return typeIdFromMap(data) == Constants::ANDROID_TOOLCHAIN_ID;
} }
ToolChain *AndroidToolChainFactory::restore(const QVariantMap &data) ToolChain *AndroidToolChainFactory::restore(const QVariantMap &data)

View File

@@ -394,8 +394,7 @@ ToolChain *CustomToolChainFactory::create()
// Used by the ToolChainManager to restore user-generated tool chains // Used by the ToolChainManager to restore user-generated tool chains
bool CustomToolChainFactory::canRestore(const QVariantMap &data) bool CustomToolChainFactory::canRestore(const QVariantMap &data)
{ {
const QByteArray id = idFromMap(data); return typeIdFromMap(data) == Constants::CUSTOM_TOOLCHAIN_ID;
return id.startsWith(QByteArray(Constants::CUSTOM_TOOLCHAIN_ID) + ':');
} }
ToolChain *CustomToolChainFactory::restore(const QVariantMap &data) ToolChain *CustomToolChainFactory::restore(const QVariantMap &data)

View File

@@ -795,8 +795,7 @@ QList<ToolChain *> GccToolChainFactory::autoDetect()
// Used by the ToolChainManager to restore user-generated tool chains // Used by the ToolChainManager to restore user-generated tool chains
bool GccToolChainFactory::canRestore(const QVariantMap &data) bool GccToolChainFactory::canRestore(const QVariantMap &data)
{ {
const QByteArray id = idFromMap(data); return typeIdFromMap(data) == Constants::GCC_TOOLCHAIN_ID;
return id.startsWith(QByteArray(Constants::GCC_TOOLCHAIN_ID) + ':');
} }
ToolChain *GccToolChainFactory::restore(const QVariantMap &data) ToolChain *GccToolChainFactory::restore(const QVariantMap &data)
@@ -1139,7 +1138,7 @@ ToolChain *ClangToolChainFactory::create()
bool ClangToolChainFactory::canRestore(const QVariantMap &data) bool ClangToolChainFactory::canRestore(const QVariantMap &data)
{ {
return idFromMap(data).startsWith(QByteArray(Constants::CLANG_TOOLCHAIN_ID) + ':'); return typeIdFromMap(data) == Constants::CLANG_TOOLCHAIN_ID;
} }
ToolChain *ClangToolChainFactory::restore(const QVariantMap &data) ToolChain *ClangToolChainFactory::restore(const QVariantMap &data)
@@ -1245,7 +1244,7 @@ ToolChain *MingwToolChainFactory::create()
bool MingwToolChainFactory::canRestore(const QVariantMap &data) bool MingwToolChainFactory::canRestore(const QVariantMap &data)
{ {
return idFromMap(data).startsWith(QByteArray(Constants::MINGW_TOOLCHAIN_ID) + ':'); return typeIdFromMap(data) == Constants::MINGW_TOOLCHAIN_ID;
} }
ToolChain *MingwToolChainFactory::restore(const QVariantMap &data) ToolChain *MingwToolChainFactory::restore(const QVariantMap &data)
@@ -1341,7 +1340,7 @@ ToolChain *LinuxIccToolChainFactory::create()
bool LinuxIccToolChainFactory::canRestore(const QVariantMap &data) bool LinuxIccToolChainFactory::canRestore(const QVariantMap &data)
{ {
return idFromMap(data).startsWith(QByteArray(Constants::LINUXICC_TOOLCHAIN_ID) + ':'); return typeIdFromMap(data) == Constants::LINUXICC_TOOLCHAIN_ID;
} }
ToolChain *LinuxIccToolChainFactory::restore(const QVariantMap &data) ToolChain *LinuxIccToolChainFactory::restore(const QVariantMap &data)

View File

@@ -632,7 +632,7 @@ bool MsvcToolChain::operator ==(const ToolChain &other) const
bool MsvcToolChainFactory::canRestore(const QVariantMap &data) bool MsvcToolChainFactory::canRestore(const QVariantMap &data)
{ {
return idFromMap(data).startsWith(QByteArray(Constants::MSVC_TOOLCHAIN_ID) + ':'); return typeIdFromMap(data) == Constants::MSVC_TOOLCHAIN_ID;
} }
} // namespace Internal } // namespace Internal

View File

@@ -261,9 +261,22 @@ ToolChain *ToolChainFactory::restore(const QVariantMap &)
return 0; return 0;
} }
static QPair<QString, QString> rawIdData(const QVariantMap &data)
{
const QString raw = data.value(QLatin1String(ID_KEY)).toString();
const int pos = raw.indexOf(QLatin1Char(':'));
QTC_ASSERT(pos > 0, return qMakePair(QString::fromLatin1("unknown"), QString::fromLatin1("unknown")));
return qMakePair(raw.mid(0, pos), raw.mid(pos + 1));
}
QByteArray ToolChainFactory::idFromMap(const QVariantMap &data) QByteArray ToolChainFactory::idFromMap(const QVariantMap &data)
{ {
return data.value(QLatin1String(ID_KEY)).toByteArray(); return rawIdData(data).second.toUtf8();
}
Core::Id ToolChainFactory::typeIdFromMap(const QVariantMap &data)
{
return Core::Id::fromString(rawIdData(data).first);
} }
void ToolChainFactory::autoDetectionToMap(QVariantMap &data, bool detected) void ToolChainFactory::autoDetectionToMap(QVariantMap &data, bool detected)

View File

@@ -192,6 +192,7 @@ public:
virtual ToolChain *restore(const QVariantMap &data); virtual ToolChain *restore(const QVariantMap &data);
static QByteArray idFromMap(const QVariantMap &data); static QByteArray idFromMap(const QVariantMap &data);
static Core::Id typeIdFromMap(const QVariantMap &data);
static void autoDetectionToMap(QVariantMap &data, bool detected); static void autoDetectionToMap(QVariantMap &data, bool detected);
protected: protected:

View File

@@ -161,9 +161,10 @@ static QList<ToolChain *> restoreFromFile(const FileName &fileName)
} }
} }
if (!restored) if (!restored)
qWarning("Warning: Unable to restore compiler '%s' stored in %s.", qWarning("Warning: '%s': Unable to restore compiler type '%s' for tool chain %s.",
qPrintable(QString::fromUtf8(ToolChainFactory::idFromMap(tcMap))), qPrintable(fileName.toUserOutput()),
qPrintable(fileName.toUserOutput())); qPrintable(ToolChainFactory::typeIdFromMap(tcMap).toString()),
qPrintable(QString::fromUtf8(ToolChainFactory::idFromMap(tcMap))));
} }
return result; return result;

View File

@@ -432,7 +432,7 @@ QString WinCEToolChain::autoDetectCdbDebugger(QStringList *checkedDirectories /*
bool WinCEToolChainFactory::canRestore(const QVariantMap &data) bool WinCEToolChainFactory::canRestore(const QVariantMap &data)
{ {
return idFromMap(data).startsWith(QByteArray(Constants::WINCE_TOOLCHAIN_ID) + ':'); return typeIdFromMap(data) == Constants::WINCE_TOOLCHAIN_ID;
} }
bool WinCEToolChain::operator ==(const ToolChain &other) const bool WinCEToolChain::operator ==(const ToolChain &other) const

View File

@@ -163,8 +163,7 @@ QnxToolChainFactory::QnxToolChainFactory()
bool QnxToolChainFactory::canRestore(const QVariantMap &data) bool QnxToolChainFactory::canRestore(const QVariantMap &data)
{ {
const QByteArray id = idFromMap(data); return typeIdFromMap(data) == Constants::QNX_TOOLCHAIN_ID;
return id.startsWith(QByteArray(Constants::QNX_TOOLCHAIN_ID) + ':');
} }
ToolChain *QnxToolChainFactory::restore(const QVariantMap &data) ToolChain *QnxToolChainFactory::restore(const QVariantMap &data)