aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/debugger/debuggerprotocol.cpp
diff options
context:
space:
mode:
authorhjk <[email protected]>2015-02-02 12:47:51 +0100
committerhjk <[email protected]>2015-02-02 14:46:16 +0000
commitba05edc6bb2422a0adc2c49b8b351bf6d0f237c7 (patch)
treea159a412f87f7942d4e4a4d927db4082765c06f8 /src/plugins/debugger/debuggerprotocol.cpp
parent7005d791c302100bff28519ec2ed7f638c9f77b8 (diff)
Debugger: Move LldbEngine::Command to debuggerprotocol
Better re-usable over there. Change-Id: I75b70054d691771efaf5b19680d8a93d2943b5ba Reviewed-by: Christian Stenger <[email protected]>
Diffstat (limited to 'src/plugins/debugger/debuggerprotocol.cpp')
-rw-r--r--src/plugins/debugger/debuggerprotocol.cpp119
1 files changed, 119 insertions, 0 deletions
diff --git a/src/plugins/debugger/debuggerprotocol.cpp b/src/plugins/debugger/debuggerprotocol.cpp
index 2c0281d30ca..71786bdb3b7 100644
--- a/src/plugins/debugger/debuggerprotocol.cpp
+++ b/src/plugins/debugger/debuggerprotocol.cpp
@@ -733,5 +733,124 @@ QString decodeData(const QByteArray &ba, int encoding)
return QCoreApplication::translate("Debugger", "<Encoding error>");
}
+//////////////////////////////////////////////////////////////////////////////////
+//
+// DebuggerCommand
+//
+//////////////////////////////////////////////////////////////////////////////////
+
+const DebuggerCommand &DebuggerCommand::argHelper(const char *name, const QByteArray &data) const
+{
+ args.append('"');
+ args.append(name);
+ args.append("\":");
+ args.append(data);
+ args.append(",");
+ return *this;
+}
+
+QByteArray DebuggerCommand::toData(const QList<QByteArray> &value)
+{
+ QByteArray res;
+ foreach (const QByteArray &item, value) {
+ if (!res.isEmpty())
+ res.append(',');
+ res += item;
+ }
+ return '[' + res + ']';
+}
+
+QByteArray DebuggerCommand::toData(const QHash<QByteArray, QByteArray> &value)
+{
+ QByteArray res;
+ QHashIterator<QByteArray, QByteArray> it(value);
+ while (it.hasNext()) {
+ it.next();
+ if (!res.isEmpty())
+ res.append(',');
+ res += '"' + it.key() + "\":" + it.value();
+ }
+ return '{' + res + '}';
+}
+
+const DebuggerCommand &DebuggerCommand::arg(const char *name, int value) const
+{
+ return argHelper(name, QByteArray::number(value));
+}
+
+const DebuggerCommand &DebuggerCommand::arg(const char *name, qlonglong value) const
+{
+ return argHelper(name, QByteArray::number(value));
+}
+
+const DebuggerCommand &DebuggerCommand::arg(const char *name, qulonglong value) const
+{
+ return argHelper(name, QByteArray::number(value));
+}
+
+const DebuggerCommand &DebuggerCommand::arg(const char *name, const QString &value) const
+{
+ return arg(name, value.toUtf8().data());
+}
+
+const DebuggerCommand &DebuggerCommand::arg(const char *name, const QByteArray &value) const
+{
+ return arg(name, value.data());
+}
+
+const DebuggerCommand &DebuggerCommand::arg(const char *name, const char *value) const
+{
+ args.append('"');
+ args.append(name);
+ args.append("\":\"");
+ args.append(value);
+ args.append("\",");
+ return *this;
+}
+
+const DebuggerCommand &DebuggerCommand::arg(const char *value) const
+{
+ args.append("\"");
+ args.append(value);
+ args.append("\",");
+ return *this;
+}
+
+const DebuggerCommand &DebuggerCommand::beginList(const char *name) const
+{
+ if (name) {
+ args += '"';
+ args += name;
+ args += "\":";
+ }
+ args += '[';
+ return *this;
+}
+
+void DebuggerCommand::endList() const
+{
+ if (args.endsWith(','))
+ args.chop(1);
+ args += "],";
+}
+
+const DebuggerCommand &DebuggerCommand::beginGroup(const char *name) const
+{
+ if (name) {
+ args += '"';
+ args += name;
+ args += "\":";
+ }
+ args += '{';
+ return *this;
+}
+
+void DebuggerCommand::endGroup() const
+{
+ if (args.endsWith(','))
+ args.chop(1);
+ args += "},";
+}
+
} // namespace Internal
} // namespace Debugger