From 342ab57db29cad5692a7e5919a413dd44f082993 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Mon, 13 Sep 2010 11:08:08 +0200 Subject: Debugger: Un-export GdbAdapters. Reviewed-by: hjk Reviewed-by: Christian Kandeler --- src/plugins/debugger/debuggerrunner.cpp | 65 +++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) (limited to 'src/plugins/debugger/debuggerrunner.cpp') diff --git a/src/plugins/debugger/debuggerrunner.cpp b/src/plugins/debugger/debuggerrunner.cpp index a7cdeb680c..a438b16eba 100644 --- a/src/plugins/debugger/debuggerrunner.cpp +++ b/src/plugins/debugger/debuggerrunner.cpp @@ -35,6 +35,10 @@ #include "debuggerplugin.h" #include "debuggerstringutils.h" #include "debuggeruiswitcher.h" +#include "gdb/gdbengine.h" +#include "gdb/remotegdbserveradapter.h" +#include "gdb/remoteplaingdbadapter.h" +#include "qml/qmlcppengine.h" #ifdef Q_OS_WIN # include "peutils.h" @@ -397,6 +401,7 @@ void DebuggerRunControl::createEngine(const DebuggerStartParameters &startParams switch (engineType) { case GdbEngineType: m_engine = createGdbEngine(sp); + initGdbEngine(qobject_cast(m_engine)); break; case ScriptEngineType: m_engine = createScriptEngine(sp); @@ -415,6 +420,8 @@ void DebuggerRunControl::createEngine(const DebuggerStartParameters &startParams break; case QmlCppEngineType: m_engine = createQmlCppEngine(sp); + if (Internal::GdbEngine *embeddedGdbEngine = gdbEngine()) + initGdbEngine(embeddedGdbEngine); break; default: { // Could not find anything suitable. @@ -430,6 +437,21 @@ void DebuggerRunControl::createEngine(const DebuggerStartParameters &startParams } } +void DebuggerRunControl::initGdbEngine(Internal::GdbEngine *engine) +{ + QTC_ASSERT(engine, return) + + // Forward adapter signals. + Internal::AbstractGdbAdapter *adapter = engine->gdbAdapter(); + if (RemotePlainGdbAdapter *rpga = qobject_cast(adapter)) { + connect(rpga, SIGNAL(requestSetup()), this, + SIGNAL(gdbAdapterRequestSetup())); + } else if (RemoteGdbServerAdapter *rgsa = qobject_cast(adapter)) { + connect(rgsa, SIGNAL(requestSetup()), + this, SIGNAL(gdbAdapterRequestSetup())); + } +} + QString DebuggerRunControl::displayName() const { QTC_ASSERT(m_engine, return QString()); @@ -592,4 +614,47 @@ Internal::DebuggerEngine *DebuggerRunControl::engine() return m_engine; } +Internal::GdbEngine *DebuggerRunControl::gdbEngine() const +{ + QTC_ASSERT(m_engine, return 0); + if (GdbEngine *gdbEngine = qobject_cast(m_engine)) + return gdbEngine; + if (QmlCppEngine * const qmlEngine = qobject_cast(m_engine)) + if (GdbEngine *embeddedGdbEngine = qobject_cast(qmlEngine->cppEngine())) + return embeddedGdbEngine; + return 0; +} + +Internal::AbstractGdbAdapter *DebuggerRunControl::gdbAdapter() const +{ + GdbEngine *engine = gdbEngine(); + QTC_ASSERT(engine, return 0) + return engine->gdbAdapter(); +} + +void DebuggerRunControl::remoteGdbHandleSetupDone() +{ + Internal::AbstractGdbAdapter *adapter = gdbAdapter(); + QTC_ASSERT(adapter, return); + if (RemotePlainGdbAdapter *rpga = qobject_cast(adapter)) { + rpga->handleSetupDone(); + } else if (RemoteGdbServerAdapter *rgsa = qobject_cast(adapter)) { + rgsa->handleSetupDone(); + } else { + QTC_ASSERT(false, /* */ ); + } +} + +void DebuggerRunControl::remoteGdbHandleSetupFailed(const QString &message) +{ + Internal::AbstractGdbAdapter *adapter = gdbAdapter(); + QTC_ASSERT(adapter, return); + if (RemotePlainGdbAdapter *rpga = qobject_cast(adapter)) { + rpga->handleSetupFailed(message); + } else if (RemoteGdbServerAdapter *rgsa = qobject_cast(adapter)) { + rgsa->handleSetupFailed(message); + } else { + QTC_ASSERT(false, /* */ ); + } +} } // namespace Debugger -- cgit v1.2.1