Commit eb021724 authored by hjk's avatar hjk

Fixes: debugger: sort array and list indices numerically

parent b0650238
......@@ -839,7 +839,7 @@ static void qDumpQByteArray(QDumper &d)
unsigned char u = (isprint(c) && c != '\'' && c != '"') ? c : '?';
sprintf(buf, "%02x (%u '%c')", c, c, u);
d.beginHash();
P(d, "name", "[" << i << "]");
P(d, "name", i);
P(d, "value", buf);
d.endHash();
}
......@@ -1104,14 +1104,14 @@ static void qDumpQHash(QDumper &d)
while (node != end) {
d.beginHash();
if (simpleKey) {
P(d, "name", "[" << i << "]");
P(d, "name", i);
qDumpInnerValueHelper(d, keyType, addOffset(node, keyOffset), "key");
if (simpleValue)
qDumpInnerValueHelper(d, valueType, addOffset(node, valueOffset));
P(d, "type", valueType);
P(d, "addr", addOffset(node, valueOffset));
} else {
P(d, "name", "[" << i << "]");
P(d, "name", i);
//P(d, "exp", "*(char*)" << node);
P(d, "exp", "*('"NS"QHashNode<" << keyType << "," << valueType << " >'*)" << node);
P(d, "type", "'"NS"QHashNode<" << keyType << "," << valueType << " >'");
......@@ -1215,7 +1215,7 @@ static void qDumpQList(QDumper &d)
d << ",children=[";
for (int i = 0; i != n; ++i) {
d.beginHash();
P(d, "name", "[" << i << "]");
P(d, "name", i);
if (innerTypeIsPointer) {
void *p = ldata.d->array + i + pdata->begin;
if (p) {
......@@ -1275,7 +1275,7 @@ static void qDumpQLinkedList(QDumper &d)
const void *p = deref(ldata);
for (int i = 0; i != n; ++i) {
d.beginHash();
P(d, "name", "[" << i << "]");
P(d, "name", i);
const void *addr = addOffset(p, 2 * sizeof(void*));
qDumpInnerValueOrPointer(d, d.innertype, stripped, addr);
p = deref(p);
......@@ -1414,7 +1414,7 @@ static void qDumpQMap(QDumper &d)
while (node != end) {
d.beginHash();
P(d, "name", "[" << i << "]");
P(d, "name", i);
if (simpleKey) {
P(d, "type", valueType);
qDumpInnerValueHelper(d, keyType, addOffset(node, keyOffset), "key");
......@@ -1660,7 +1660,7 @@ static void qDumpQObjectMethodList(QDumper &d)
const QMetaMethod & method = mo->method(i);
int mt = method.methodType();
d.beginHash();
P(d, "name", "[" << i << "] " << mo->indexOfMethod(method.signature())
P(d, "name", i << " " << mo->indexOfMethod(method.signature())
<< " " << method.signature());
P(d, "value", (mt == QMetaMethod::Signal ? "<Signal>" : "<Slot>") << " (" << mt << ")");
d.endHash();
......@@ -1712,11 +1712,11 @@ static void qDumpQObjectSignal(QDumper &d)
for (int i = 0; i != connList.size(); ++i) {
const QObjectPrivate::Connection &conn = connList.at(i);
d.beginHash();
P(d, "name", "[" << i << "] receiver");
P(d, "name", i << " receiver");
qDumpInnerValueHelper(d, NS"QObject *", conn.receiver);
d.endHash();
d.beginHash();
P(d, "name", "[" << i << "] slot");
P(d, "name", i << " slot");
P(d, "type", "");
if (conn.receiver)
P(d, "value", conn.receiver->metaObject()->method(conn.method).signature());
......@@ -1725,7 +1725,7 @@ static void qDumpQObjectSignal(QDumper &d)
P(d, "numchild", "0");
d.endHash();
d.beginHash();
P(d, "name", "[" << i << "] type");
P(d, "name", i << " type");
P(d, "type", "");
P(d, "value", "<" << qConnectionTypes[conn.method] << " connection>");
P(d, "numchild", "0");
......@@ -1756,7 +1756,7 @@ static void qDumpQObjectSignalList(QDumper &d)
int k = mo->indexOfSignal(method.signature());
const QObjectPrivate::ConnectionList &connList = qConnectionList(ob, k);
d.beginHash();
P(d, "name", "[" << k << "]");
P(d, "name", k);
P(d, "value", method.signature());
P(d, "numchild", connList.size());
//P(d, "numchild", "1");
......@@ -1796,17 +1796,17 @@ static void qDumpQObjectSlot(QDumper &d)
const QMetaMethod & method =
sender.sender->metaObject()->method(sender.signal);
d.beginHash();
P(d, "name", "[" << s << "] sender");
P(d, "name", s << " sender");
qDumpInnerValueHelper(d, NS"QObject *", sender.sender);
d.endHash();
d.beginHash();
P(d, "name", "[" << s << "] signal");
P(d, "name", s << " signal");
P(d, "type", "");
P(d, "value", method.signature());
P(d, "numchild", "0");
d.endHash();
d.beginHash();
P(d, "name", "[" << s << "] type");
P(d, "name", s << " type");
P(d, "type", "");
P(d, "value", "<" << qConnectionTypes[conn.method] << " connection>");
P(d, "numchild", "0");
......@@ -1843,7 +1843,7 @@ static void qDumpQObjectSlotList(QDumper &d)
if (method.methodType() == QMetaMethod::Slot) {
d.beginHash();
int k = mo->indexOfSlot(method.signature());
P(d, "name", "[" << k << "]");
P(d, "name", k);
P(d, "value", method.signature());
// count senders. expensive...
......@@ -1911,7 +1911,7 @@ static void qDumpQSet(QDumper &d)
for (int bucket = 0; bucket != hd->numBuckets && i <= 10000; ++bucket) {
for (node = hd->buckets[bucket]; node->next; node = node->next) {
d.beginHash();
P(d, "name", "[" << i << "]");
P(d, "name", i);
P(d, "type", d.innertype);
P(d, "exp", "(('"NS"QHashNode<" << d.innertype
<< ","NS"QHashDummyValue>'*)"
......@@ -1970,7 +1970,7 @@ static void qDumpQStringList(QDumper &d)
d << ",children=[";
for (int i = 0; i != n; ++i) {
d.beginHash();
P(d, "name", "[" << i << "]");
P(d, "name", i);
P(d, "value", list[i]);
P(d, "valueencoded", "1");
d.endHash();
......@@ -2108,7 +2108,7 @@ static void qDumpQVector(QDumper &d)
d << ",children=[";
for (int i = 0; i != n; ++i) {
d.beginHash();
P(d, "name", "[" << i << "]");
P(d, "name", i);
qDumpInnerValueOrPointer(d, d.innertype, stripped,
addOffset(v, i * innersize + typeddatasize));
d.endHash();
......@@ -2156,7 +2156,7 @@ static void qDumpStdList(QDumper &d)
it = list.begin();
for (int i = 0; i < 1000 && it != list.end(); ++i, ++it) {
d.beginHash();
P(d, "name", "[" << i << "]");
P(d, "name", i);
qDumpInnerValueOrPointer(d, d.innertype, stripped, it.operator->());
d.endHash();
}
......@@ -2218,7 +2218,7 @@ static void qDumpStdMap(QDumper &d)
d.endHash();
} else {
d.beginHash();
P(d, "name", "[" << i << "]");
P(d, "name", i);
P(d, "addr", it.operator->());
P(d, "type", pairType);
d.endHash();
......@@ -2305,7 +2305,7 @@ static void qDumpStdVector(QDumper &d)
d << ",children=[";
for (int i = 0; i != n; ++i) {
d.beginHash();
P(d, "name", "[" << i << "]");
P(d, "name", i);
qDumpInnerValueOrPointer(d, d.innertype, stripped,
addOffset(v->start, i * innersize));
d.endHash();
......
......@@ -565,10 +565,7 @@ bool DebuggerPlugin::initialize(const QStringList &arguments, QString *error_mes
connect(resetToSimpleAction, SIGNAL(triggered()),
m_manager, SLOT(setSimpleDockWidgetArrangement()));
m_generalOptionPage = 0;
// FIXME:
// FIXME:
m_generalOptionPage = new GdbOptionPage(this);
addObject(m_generalOptionPage);
......
......@@ -3548,6 +3548,8 @@ void GdbEngine::handleDumpCustomValue2(const GdbResultRecord &record,
WatchData data1 = childtemplate;
data1.name = item.findChild("name").data();
data1.iname = data.iname + "." + data1.name;
if (!data1.name.isEmpty() && data1.name.at(0).isDigit())
data1.name = '[' + data1.name + ']';
//qDebug() << "NAMEENCODED: " << item.findChild("nameencoded").data()
// << item.findChild("nameencoded").data()[1];
if (item.findChild("nameencoded").data()[0] == '1')
......
......@@ -255,7 +255,6 @@ QString WatchData::toString() const
return res;
}
static bool iNameSorter(const WatchData &d1, const WatchData &d2)
{
if (d1.level != d2.level)
......@@ -265,19 +264,9 @@ static bool iNameSorter(const WatchData &d1, const WatchData &d2)
QString name1 = d1.iname.section('.', level, level);
QString name2 = d2.iname.section('.', level, level);
//MODEL_DEBUG(" SORT: " << name1 << name2 << (name1 < name2));
if (name1 != name2) {
// This formerly used inames. in this case 'lastIndexOf' probably
// makes more sense.
if (name1.startsWith('[') && name2.startsWith('[')) {
return name1.mid(1, name1.indexOf(']') - 1).toInt()
< name2.mid(1, name2.indexOf(']') - 1).toInt();
// numbers should be sorted according to their numerical value
//int pos = d1.name.lastIndexOf('.');
//if (pos != -1 && pos + 1 != d1.name.size() && d1.name.at(pos + 1).isDigit())
// return d1.name.size() < d2.name.size();
// fall through
}
if (name1 != name2 && !name1.isEmpty() && !name2.isEmpty()) {
if (name1.at(0).isDigit() && name2.at(0).isDigit())
return name1.toInt() < name2.toInt();
return name1 < name2;
}
}
......
......@@ -437,6 +437,7 @@ void FakeVimHandler::Private::setupWidget()
m_plaintextedit->setLineWrapMode(QPlainTextEdit::NoWrap);
}
m_wasReadOnly = EDITOR(isReadOnly());
//EDITOR(setReadOnly(true));
showBlackMessage("vi emulation mode.");
updateMiniBuffer();
}
......
......@@ -244,7 +244,6 @@ void testQLinkedList()
f.append(Foo(1));
f.append(Foo(2));
#endif
QLinkedList<std::string> v;
v.push_back("aa");
v.push_back("bb");
......@@ -258,7 +257,7 @@ void testQList()
QList<int> li;
QList<uint> lu;
for (int i = 0; i != 3; ++i) {
for (int i = 0; i != 30; ++i) {
li.append(i);
}
li.append(101);
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment