forked from qt-creator/qt-creator
debugger: more QByteArray/type
This commit is contained in:
@@ -1520,7 +1520,7 @@ void GdbEngine::handleHasPython(const GdbResponse &response)
|
||||
data.fromStringMultiple(contents.data());
|
||||
const GdbMi dumpers = data.findChild("dumpers");
|
||||
foreach (const GdbMi &dumper, dumpers.children()) {
|
||||
QString type = _(dumper.findChild("type").data());
|
||||
QByteArray type = dumper.findChild("type").data();
|
||||
QStringList formats(tr("Raw structure"));
|
||||
QString reported = _(dumper.findChild("formats").data());
|
||||
formats.append(reported.split(_(","), QString::SkipEmptyParts));
|
||||
|
||||
@@ -251,13 +251,13 @@ static QByteArray parentName(const QByteArray &iname)
|
||||
static QString chopConst(QString type)
|
||||
{
|
||||
while (1) {
|
||||
if (type.startsWith("const"))
|
||||
if (type.startsWith(QLatin1String("const")))
|
||||
type = type.mid(5);
|
||||
else if (type.startsWith(' '))
|
||||
else if (type.startsWith(QLatin1Char(' ')))
|
||||
type = type.mid(1);
|
||||
else if (type.endsWith("const"))
|
||||
else if (type.endsWith(QLatin1String("const")))
|
||||
type.chop(5);
|
||||
else if (type.endsWith(' '))
|
||||
else if (type.endsWith(QLatin1Char(' ')))
|
||||
type.chop(1);
|
||||
else
|
||||
break;
|
||||
@@ -279,14 +279,14 @@ static inline QRegExp stdStringRegExp(const QString &charType)
|
||||
return re;
|
||||
}
|
||||
|
||||
static QString niceTypeHelper(const QString typeIn)
|
||||
static QByteArray niceTypeHelper(const QByteArray typeIn)
|
||||
{
|
||||
static QMap<QString, QString> cache;
|
||||
const QMap<QString, QString>::const_iterator it = cache.constFind(typeIn);
|
||||
static QMap<QByteArray, QByteArray> cache;
|
||||
const QMap<QByteArray, QByteArray>::const_iterator it = cache.constFind(typeIn);
|
||||
if (it != cache.constEnd())
|
||||
return it.value();
|
||||
|
||||
QString type = typeIn;
|
||||
QString type = QString::fromUtf8(typeIn);
|
||||
type.replace(QLatin1Char('*'), QLatin1Char('@'));
|
||||
|
||||
for (int i = 0; i < 10; ++i) {
|
||||
@@ -375,19 +375,20 @@ static QString niceTypeHelper(const QString typeIn)
|
||||
}
|
||||
}
|
||||
}
|
||||
type.replace(QLatin1Char('@'), QLatin1Char('*'));
|
||||
type.replace(QLatin1String(" >"), QString(QLatin1Char('>')));
|
||||
cache.insert(typeIn, type); // For simplicity, also cache unmodified types
|
||||
return type;
|
||||
QByteArray typeOut = type.toUtf8();
|
||||
typeOut.replace('@', '*');
|
||||
typeOut.replace(" >", ">");
|
||||
cache.insert(typeIn, typeOut); // For simplicity, also cache unmodified types
|
||||
return typeOut;
|
||||
}
|
||||
|
||||
QString WatchModel::niceType(const QString &typeIn) const
|
||||
QByteArray WatchModel::niceType(const QByteArray &typeIn) const
|
||||
{
|
||||
QString type = niceTypeHelper(typeIn);
|
||||
QByteArray type = niceTypeHelper(typeIn);
|
||||
if (!theDebuggerBoolSetting(ShowStdNamespace))
|
||||
type = type.remove("std::");
|
||||
type.replace("std::", "");
|
||||
if (!theDebuggerBoolSetting(ShowQtNamespace))
|
||||
type = type.remove(engine()->qtNamespace());
|
||||
type.replace(engine()->qtNamespace(), "");
|
||||
return type;
|
||||
}
|
||||
|
||||
@@ -626,7 +627,7 @@ QVariant WatchModel::data(const QModelIndex &idx, int role) const
|
||||
case 2: {
|
||||
if (!data.displayedType.isEmpty())
|
||||
return data.displayedType;
|
||||
return niceType(data.type);
|
||||
return QString::fromUtf8(niceType(data.type));
|
||||
}
|
||||
default: break;
|
||||
}
|
||||
@@ -1443,14 +1444,14 @@ void WatchHandler::loadTypeFormats()
|
||||
while (it.hasNext()) {
|
||||
it.next();
|
||||
if (!it.key().isEmpty())
|
||||
m_typeFormats.insert(it.key(), it.value().toInt());
|
||||
m_typeFormats.insert(it.key().toUtf8(), it.value().toInt());
|
||||
}
|
||||
}
|
||||
|
||||
void WatchHandler::saveTypeFormats()
|
||||
{
|
||||
QMap<QString, QVariant> typeFormats;
|
||||
QHashIterator<QString, int> it(m_typeFormats);
|
||||
QHashIterator<QByteArray, int> it(m_typeFormats);
|
||||
while (it.hasNext()) {
|
||||
it.next();
|
||||
const int format = it.value();
|
||||
@@ -1535,7 +1536,7 @@ WatchData *WatchHandler::findItem(const QByteArray &iname) const
|
||||
return model->findItem(iname, model->m_root);
|
||||
}
|
||||
|
||||
void WatchHandler::setFormat(const QString &type, int format)
|
||||
void WatchHandler::setFormat(const QByteArray &type, int format)
|
||||
{
|
||||
if (format == -1)
|
||||
m_typeFormats.remove(type);
|
||||
@@ -1580,10 +1581,10 @@ QByteArray WatchHandler::typeFormatRequests() const
|
||||
{
|
||||
QByteArray ba;
|
||||
if (!m_typeFormats.isEmpty()) {
|
||||
QHashIterator<QString, int> it(m_typeFormats);
|
||||
QHashIterator<QByteArray, int> it(m_typeFormats);
|
||||
while (it.hasNext()) {
|
||||
it.next();
|
||||
ba.append(it.key().toLatin1().toHex());
|
||||
ba.append(it.key().toHex());
|
||||
ba.append('=');
|
||||
ba.append(QByteArray::number(it.value()));
|
||||
ba.append(',');
|
||||
@@ -1610,7 +1611,7 @@ QByteArray WatchHandler::individualFormatRequests() const
|
||||
return ba;
|
||||
}
|
||||
|
||||
void WatchHandler::addTypeFormats(const QString &type, const QStringList &formats)
|
||||
void WatchHandler::addTypeFormats(const QByteArray &type, const QStringList &formats)
|
||||
{
|
||||
m_reportedTypeFormats.insert(type, formats);
|
||||
}
|
||||
|
||||
@@ -119,7 +119,7 @@ signals:
|
||||
void enableUpdates(bool);
|
||||
|
||||
private:
|
||||
QString niceType(const QString &typeIn) const;
|
||||
QByteArray niceType(const QByteArray &typeIn) const;
|
||||
void formatRequests(QByteArray *out, const WatchItem *item) const;
|
||||
DebuggerEngine *engine() const;
|
||||
|
||||
@@ -173,7 +173,7 @@ public:
|
||||
|
||||
int format(const QByteArray &iname) const;
|
||||
|
||||
void addTypeFormats(const QString &type, const QStringList &formats);
|
||||
void addTypeFormats(const QByteArray &type, const QStringList &formats);
|
||||
|
||||
QByteArray watcherName(const QByteArray &exp);
|
||||
|
||||
@@ -185,7 +185,7 @@ private:
|
||||
|
||||
void loadTypeFormats();
|
||||
void saveTypeFormats();
|
||||
void setFormat(const QString &type, int format);
|
||||
void setFormat(const QByteArray &type, int format);
|
||||
void updateWatchersWindow();
|
||||
|
||||
bool m_inChange;
|
||||
@@ -195,7 +195,7 @@ private:
|
||||
EditHandlers m_editHandlers;
|
||||
|
||||
QHash<QByteArray, int> m_watcherNames;
|
||||
QHash<QString, int> m_typeFormats;
|
||||
QHash<QByteArray, int> m_typeFormats;
|
||||
QHash<QByteArray, int> m_individualFormats; // Indexed by iname.
|
||||
QHash<QString, QStringList> m_reportedTypeFormats;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user