forked from qt-creator/qt-creator
Debugger: Fixed QMapNode dumper.
This commit is contained in:
@@ -1696,7 +1696,7 @@ static void qDumpQMapNode(QDumper &d)
|
|||||||
unsigned keyOffset = 2 * sizeof(void*) - mapnodesize;
|
unsigned keyOffset = 2 * sizeof(void*) - mapnodesize;
|
||||||
unsigned valueOffset = 2 * sizeof(void*) - mapnodesize + valueOff;
|
unsigned valueOffset = 2 * sizeof(void*) - mapnodesize + valueOff;
|
||||||
|
|
||||||
d.beginChildren(d.innertype);
|
d.beginChildren();
|
||||||
d.beginHash();
|
d.beginHash();
|
||||||
d.putItem("name", "key");
|
d.putItem("name", "key");
|
||||||
qDumpInnerValue(d, keyType, addOffset(h, keyOffset));
|
qDumpInnerValue(d, keyType, addOffset(h, keyOffset));
|
||||||
|
@@ -1319,41 +1319,47 @@ void tst_Debugger::dumpQMap()
|
|||||||
}
|
}
|
||||||
|
|
||||||
template <typename K, typename V>
|
template <typename K, typename V>
|
||||||
void tst_Debugger::dumpQMapNodeHelper(QMap<K, V> &map)
|
void tst_Debugger::dumpQMapNodeHelper(QMap<K, V> &m)
|
||||||
{
|
{
|
||||||
#if 0 // TODO: Fails due to inconsistencies in gdbmacros.cpp
|
typename QMap<K, V>::iterator it = m.begin();
|
||||||
for (typename QMap<K, V>::iterator it = map.begin(); it != map.end(); ++it) {
|
const K &key = it.key();
|
||||||
const K &key = it.key();
|
const V &val = it.value();
|
||||||
const V &val = it.value();
|
const char * const keyType = typeToString(key);
|
||||||
const char * const keyType = typeToString(key);
|
QByteArray expected = QByteArray("value='',numchild='2',"
|
||||||
QByteArray expected = QByteArray("value='',numchild='2',childtype='").
|
"children=[{name='key',addr='").append(ptrToBa(&key)).
|
||||||
append(keyType).append("',childnumchild='").append(typeToNumchild(key)).
|
append("',type='").append(typeToString(key)).append("',value='").
|
||||||
append("',children=[{name='key',addr='").append(ptrToBa(&key)).
|
append(valToString(key)).append("'},{name='value',addr='").
|
||||||
append("',value='").append(valToString(key)).append("'},{name='value',addr='").
|
append(ptrToBa(&val)).append("',type='").append(typeToString(val)).
|
||||||
append(ptrToBa(&val)).append("',value='").append(valToString(val)).
|
append("',value='").append(valToString(val)).
|
||||||
append("'}]");
|
append("'}]");
|
||||||
size_t nodeSize;
|
size_t nodeSize;
|
||||||
size_t valOffset;
|
size_t valOffset;
|
||||||
getMapNodeParams<K, V>(nodeSize, valOffset);
|
getMapNodeParams<K, V>(nodeSize, valOffset);
|
||||||
testDumper(expected, *reinterpret_cast<QMapData **>(&it), NS"QMapNode",
|
testDumper(expected, *reinterpret_cast<QMapData **>(&it), NS"QMapNode",
|
||||||
true, getMapType(key, val), "", 0, 0, nodeSize, valOffset);
|
true, getMapType(key, val), "", 0, 0, nodeSize, valOffset);
|
||||||
};
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void tst_Debugger::dumpQMapNode()
|
void tst_Debugger::dumpQMapNode()
|
||||||
{
|
{
|
||||||
// Case 1: Empty Map.
|
// Case 1: simple type -> simple type.
|
||||||
QMap<int, QString> map;
|
QMap<int, int> map;
|
||||||
|
map[2] = 3;
|
||||||
dumpQMapNodeHelper(map);
|
dumpQMapNodeHelper(map);
|
||||||
|
|
||||||
// Case 2: One element.
|
// Case 2: simple type -> composite type.
|
||||||
map[3] = "String 1";
|
QMap<int, QString> map2;
|
||||||
dumpQMapNodeHelper(map);
|
map2[3] = "String 5";
|
||||||
|
dumpQMapNodeHelper(map2);
|
||||||
|
|
||||||
// Case 3: Two elements.
|
// Case 3: composite type -> simple type.
|
||||||
map[10] = "String 2";
|
QMap<QString, int> map3;
|
||||||
dumpQMapNodeHelper(map);
|
map3["String 7"] = 11;
|
||||||
|
dumpQMapNodeHelper(map3);
|
||||||
|
|
||||||
|
// Case 4: composite type -> composite type.
|
||||||
|
QMap<QString, QString> map4;
|
||||||
|
map4["String 13"] = "String 17";
|
||||||
|
dumpQMapNodeHelper(map4);
|
||||||
}
|
}
|
||||||
|
|
||||||
void tst_Debugger::dumpQObject()
|
void tst_Debugger::dumpQObject()
|
||||||
@@ -1911,17 +1917,17 @@ void tst_Debugger::dumpQPixmapHelper(QPixmap &p)
|
|||||||
{
|
{
|
||||||
QByteArray expected = QByteArray("value='(").append(QString::number(p.width())).
|
QByteArray expected = QByteArray("value='(").append(QString::number(p.width())).
|
||||||
append("x").append(QString::number(p.height())).
|
append("x").append(QString::number(p.height())).
|
||||||
append("',type='"NS"QPixmap',numchild='0'");
|
append(")',type='"NS"QPixmap',numchild='0'");
|
||||||
testDumper(expected, &p, NS"QPixmap", true);
|
testDumper(expected, &p, NS"QPixmap", true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void tst_Debugger::dumpQPixmap()
|
void tst_Debugger::dumpQPixmap()
|
||||||
{
|
{
|
||||||
#if 0 // Crashes.
|
|
||||||
// Case 1: Null Pixmap.
|
// Case 1: Null Pixmap.
|
||||||
QPixmap p;
|
QPixmap p;
|
||||||
dumpQPixmapHelper(p);
|
dumpQPixmapHelper(p);
|
||||||
|
|
||||||
|
#if 0 // Crashes.
|
||||||
// Case 2: Uninitialized non-null pixmap.
|
// Case 2: Uninitialized non-null pixmap.
|
||||||
p = QPixmap(20, 100);
|
p = QPixmap(20, 100);
|
||||||
dumpQPixmapHelper(p);
|
dumpQPixmapHelper(p);
|
||||||
|
Reference in New Issue
Block a user