diff options
author | Friedemann Kleint <[email protected]> | 2010-09-13 11:08:08 +0200 |
---|---|---|
committer | Friedemann Kleint <[email protected]> | 2010-09-13 11:08:08 +0200 |
commit | 342ab57db29cad5692a7e5919a413dd44f082993 (patch) | |
tree | a277f20f5b44806c6260b01d7765ae14b8dc414f /src/plugins/debugger/debuggerrunner.cpp | |
parent | 5c0743317543034dd35fee94baa173a37bb48494 (diff) |
Debugger: Un-export GdbAdapters.
Reviewed-by: hjk
Reviewed-by: Christian Kandeler <[email protected]>
Diffstat (limited to 'src/plugins/debugger/debuggerrunner.cpp')
-rw-r--r-- | src/plugins/debugger/debuggerrunner.cpp | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/src/plugins/debugger/debuggerrunner.cpp b/src/plugins/debugger/debuggerrunner.cpp index a7cdeb680c5..a438b16eba1 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<Internal::GdbEngine *>(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<RemotePlainGdbAdapter *>(adapter)) { + connect(rpga, SIGNAL(requestSetup()), this, + SIGNAL(gdbAdapterRequestSetup())); + } else if (RemoteGdbServerAdapter *rgsa = qobject_cast<RemoteGdbServerAdapter *>(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<GdbEngine *>(m_engine)) + return gdbEngine; + if (QmlCppEngine * const qmlEngine = qobject_cast<QmlCppEngine *>(m_engine)) + if (GdbEngine *embeddedGdbEngine = qobject_cast<GdbEngine *>(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<RemotePlainGdbAdapter *>(adapter)) { + rpga->handleSetupDone(); + } else if (RemoteGdbServerAdapter *rgsa = qobject_cast<RemoteGdbServerAdapter *>(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<RemotePlainGdbAdapter *>(adapter)) { + rpga->handleSetupFailed(message); + } else if (RemoteGdbServerAdapter *rgsa = qobject_cast<RemoteGdbServerAdapter *>(adapter)) { + rgsa->handleSetupFailed(message); + } else { + QTC_ASSERT(false, /* */ ); + } +} } // namespace Debugger |