diff options
author | Oswald Buddenhagen <oswald.buddenhagen@nokia.com> | 2009-11-30 15:17:34 +0100 |
---|---|---|
committer | Oswald Buddenhagen <oswald.buddenhagen@nokia.com> | 2009-11-30 15:55:11 +0100 |
commit | 9c66c068201feab7035b5991b199b37fa8c9ddc2 (patch) | |
tree | f0a3e3c971c571adfe6799f6433b01fd296f539e /src | |
parent | b4be611e1bb7c0a58dccf754c228174631a47512 (diff) | |
download | qt-creator-9c66c068201feab7035b5991b199b37fa8c9ddc2.tar.gz |
mi parser: don't construct dummy tuples, but parse lists directly
Diffstat (limited to 'src')
-rw-r--r-- | src/plugins/debugger/gdb/gdbengine.cpp | 7 | ||||
-rw-r--r-- | src/plugins/debugger/gdb/gdbmi.cpp | 7 | ||||
-rw-r--r-- | src/plugins/debugger/gdb/gdbmi.h | 2 | ||||
-rw-r--r-- | src/plugins/debugger/watchutils.cpp | 14 |
4 files changed, 15 insertions, 15 deletions
diff --git a/src/plugins/debugger/gdb/gdbengine.cpp b/src/plugins/debugger/gdb/gdbengine.cpp index b8fa6fa674..7a2c00b12d 100644 --- a/src/plugins/debugger/gdb/gdbengine.cpp +++ b/src/plugins/debugger/gdb/gdbengine.cpp @@ -155,9 +155,8 @@ static bool parseConsoleStream(const GdbResponse &response, GdbMi *contents) out = out.left(out.lastIndexOf('"')); // optimization: dumper output never needs real C unquoting out.replace('\\', ""); - out = "dummy={" + out + "}"; - contents->fromString(out); + contents->fromStringMultiple(out); //qDebug() << "CONTENTS" << contents->toString(true); return contents->isValid(); } @@ -3584,8 +3583,8 @@ void GdbEngine::handleStackFrame(const GdbResponse &response) << out.left(pos); out = out.mid(pos); } - GdbMi all("[" + out + "]"); - //GdbMi all(out); + GdbMi all; + all.fromStringMultiple(out); //qDebug() << "\n\n\nALL: " << all.toString() << "\n"; GdbMi locals = all.findChild("locals"); diff --git a/src/plugins/debugger/gdb/gdbmi.cpp b/src/plugins/debugger/gdb/gdbmi.cpp index ffac5d76d1..639e698d36 100644 --- a/src/plugins/debugger/gdb/gdbmi.cpp +++ b/src/plugins/debugger/gdb/gdbmi.cpp @@ -348,6 +348,13 @@ void GdbMi::fromString(const QByteArray &ba) parseResultOrValue(from, to); } +void GdbMi::fromStringMultiple(const QByteArray &ba) +{ + const char *from = ba.constBegin(); + const char *to = ba.constEnd(); + parseTuple_helper(from, to); +} + GdbMi GdbMi::findChild(const char *name) const { for (int i = 0; i < m_children.size(); ++i) diff --git a/src/plugins/debugger/gdb/gdbmi.h b/src/plugins/debugger/gdb/gdbmi.h index 24295afea6..a4ce837503 100644 --- a/src/plugins/debugger/gdb/gdbmi.h +++ b/src/plugins/debugger/gdb/gdbmi.h @@ -91,7 +91,6 @@ class GdbMi { public: GdbMi() : m_type(Invalid) {} - explicit GdbMi(const QByteArray &str) { fromString(str); } QByteArray m_name; QByteArray m_data; @@ -126,6 +125,7 @@ public: QByteArray toString(bool multiline = false, int indent = 0) const; void fromString(const QByteArray &str); + void fromStringMultiple(const QByteArray &str); void setStreamOutput(const QByteArray &name, const QByteArray &content); private: diff --git a/src/plugins/debugger/watchutils.cpp b/src/plugins/debugger/watchutils.cpp index f5ef9250e7..1c07ef499e 100644 --- a/src/plugins/debugger/watchutils.cpp +++ b/src/plugins/debugger/watchutils.cpp @@ -975,11 +975,8 @@ bool QtDumperHelper::parseQuery(const GdbMi &contents, Debugger debugger) // parse a query bool QtDumperHelper::parseQuery(const char *data, Debugger debugger) { - QByteArray fullData = data; - fullData.insert(0, '{'); - fullData.append(data); - fullData.append('}'); - GdbMi root(fullData); + GdbMi root; + root.fromStringMultiple(QByteArray(data)); if (!root.isValid()) return false; return parseQuery(root, debugger); @@ -1475,11 +1472,8 @@ bool QtDumperHelper::parseValue(const char *data, QList<WatchData> *l) { l->clear(); - QByteArray fullData = data; - fullData.insert(0, '{'); - fullData.append(data); - fullData.append('}'); - GdbMi root(fullData); + GdbMi root; + root.fromStringMultiple(QByteArray(data)); if (!root.isValid()) return false; gbdMiToWatchData(root, GdbMiRecursionContext(), l); |