From 3d9a53cff262e5613295677ce1444afec4c2e47f Mon Sep 17 00:00:00 2001
From: hjk <qtc-committer@nokia.com>
Date: Mon, 11 May 2009 10:22:03 +0200
Subject: [PATCH] debugger: replace a few '#ifdef LINUX' by '#if defined(UNIX)
 && !defined(MAC)

---
 src/plugins/debugger/debuggermanager.cpp | 83 ++++++++++--------------
 src/plugins/debugger/debuggerplugin.cpp  |  2 +
 src/plugins/debugger/gdbengine.cpp       | 59 +++++------------
 3 files changed, 51 insertions(+), 93 deletions(-)

diff --git a/src/plugins/debugger/debuggermanager.cpp b/src/plugins/debugger/debuggermanager.cpp
index 25c545fd6d6..8892762da6a 100644
--- a/src/plugins/debugger/debuggermanager.cpp
+++ b/src/plugins/debugger/debuggermanager.cpp
@@ -164,10 +164,12 @@ DebuggerManager::DebuggerManager()
 
 DebuggerManager::~DebuggerManager()
 {
-    delete gdbEngine;
-    delete winEngine;
-    delete scriptEngine;
-    delete tcfEngine;
+    #define doDelete(ptr) delete ptr; ptr = 0
+    doDelete(gdbEngine);
+    doDelete(winEngine);
+    doDelete(scriptEngine);
+    doDelete(tcfEngine);
+    #undef doDelete
 }
 
 void DebuggerManager::init()
@@ -507,8 +509,8 @@ void DebuggerManager::setSimpleDockWidgetArrangement()
     m_mainWindow->tabifyDockWidget(m_watchDock, m_threadsDock);
     m_mainWindow->tabifyDockWidget(m_watchDock, m_sourceFilesDock);
 
-    // They are rarely used even in ordinary debugging. Hiding them also saves
-    // cycles since the corresponding information won't be retrieved.
+    // They following views are rarely used in ordinary debugging. Hiding them
+    // saves cycles since the corresponding information won't be retrieved.
     m_sourceFilesDock->hide();
     m_registerDock->hide();
     m_disassemblerDock->hide();
@@ -621,54 +623,35 @@ void DebuggerManager::shutdown()
         m_engine->shutdown();
     m_engine = 0;
 
-    delete scriptEngine;
-    scriptEngine = 0;
-    delete gdbEngine;
-    gdbEngine = 0;
-    delete winEngine;
-    winEngine = 0;
+    #define doDelete(ptr) delete ptr; ptr = 0
+    doDelete(scriptEngine);
+    doDelete(gdbEngine);
+    doDelete(winEngine);
+    doDelete(tcfEngine);
 
     // Delete these manually before deleting the manager
     // (who will delete the models for most views)
-    delete m_breakWindow;
-    delete m_disassemblerWindow;
-    delete m_modulesWindow;
-    delete m_outputWindow;
-    delete m_registerWindow;
-    delete m_stackWindow;
-    delete m_sourceFilesWindow;
-    delete m_threadsWindow;
-    delete m_tooltipWindow;
-    delete m_watchersWindow;
-    delete m_localsWindow;
-    // These widgets are all in some layout which will take care of deletion.
-    m_breakWindow = 0;
-    m_disassemblerWindow = 0;
-    m_modulesWindow = 0;
-    m_outputWindow = 0;
-    m_registerWindow = 0;
-    m_stackWindow = 0;
-    m_sourceFilesWindow = 0;
-    m_threadsWindow = 0;
-    m_tooltipWindow = 0;
-    m_watchersWindow = 0;
-    m_localsWindow = 0;
-
-    delete m_breakHandler;
-    delete m_disassemblerHandler;
-    delete m_threadsHandler;
-    delete m_modulesHandler;
-    delete m_registerHandler;
-    delete m_stackHandler;
-    delete m_watchHandler;
-    m_breakHandler = 0;
-    m_disassemblerHandler = 0;
-    m_threadsHandler = 0;
-    m_modulesHandler = 0;
-    m_registerHandler = 0;
-    m_stackHandler = 0;
-    m_watchHandler = 0;
+    doDelete(m_breakWindow);
+    doDelete(m_disassemblerWindow);
+    doDelete(m_modulesWindow);
+    doDelete(m_outputWindow);
+    doDelete(m_registerWindow);
+    doDelete(m_stackWindow);
+    doDelete(m_sourceFilesWindow);
+    doDelete(m_threadsWindow);
+    doDelete(m_tooltipWindow);
+    doDelete(m_watchersWindow);
+    doDelete(m_localsWindow);
+
+    doDelete(m_breakHandler);
+    doDelete(m_disassemblerHandler);
+    doDelete(m_threadsHandler);
+    doDelete(m_modulesHandler);
+    doDelete(m_registerHandler);
+    doDelete(m_stackHandler);
+    doDelete(m_watchHandler);
     //qDebug() << "DEBUGGER_MANAGER SHUTDOWN END";
+    #undef doDelete
 }
 
 BreakpointData *DebuggerManager::findBreakpoint(const QString &fileName, int lineNumber)
diff --git a/src/plugins/debugger/debuggerplugin.cpp b/src/plugins/debugger/debuggerplugin.cpp
index 41a2f88ff7f..262fd38912b 100644
--- a/src/plugins/debugger/debuggerplugin.cpp
+++ b/src/plugins/debugger/debuggerplugin.cpp
@@ -348,8 +348,10 @@ QWidget *DebuggingHelperOptionPage::createPage(QWidget *parent)
         this, SLOT(updateState()));
 
     m_group.clear();
+#ifdef QT_DEBUG
     m_group.insert(theDebuggerAction(UseDebuggingHelpers),
         m_ui.checkBoxUseDebuggingHelpers);
+#endif
     m_group.insert(theDebuggerAction(UseCustomDebuggingHelperLocation),
         m_ui.checkBoxUseCustomDebuggingHelperLocation);
     m_group.insert(theDebuggerAction(CustomDebuggingHelperLocation),
diff --git a/src/plugins/debugger/gdbengine.cpp b/src/plugins/debugger/gdbengine.cpp
index 531b74b6a71..15545d6b42e 100644
--- a/src/plugins/debugger/gdbengine.cpp
+++ b/src/plugins/debugger/gdbengine.cpp
@@ -416,7 +416,7 @@ void GdbEngine::handleResponse(const QByteArray &buff)
                 QByteArray id = record.findChild("id").data();
                 q->showStatusMessage(tr("Thread %1 selected.").arg(_(id)));
                 //"{id="2"}" 
-            #ifdef Q_OS_MAC
+            #if defined(Q_OS_MAC)
             } else if (asyncClass == "shlibs-updated") {
                 // MAC announces updated libs
             } else if (asyncClass == "shlibs-added") {
@@ -566,7 +566,7 @@ void GdbEngine::readGdbStandardOutput()
         scan = newstart;
         if (end == start)
             continue;
-        #ifdef Q_OS_WIN
+        #if defined(Q_OS_WIN)
         if (m_inbuffer.at(end - 1) == '\r') {
             --end;
             if (end == start)
@@ -754,35 +754,6 @@ void GdbEngine::handleTargetCore(const GdbResultRecord &, const QVariant &)
     qq->reloadRegisters();
 }
 
-#if 0
-void GdbEngine::handleQueryPwd(const GdbResultRecord &record)
-{
-    // FIXME: remove this special case as soon as 'pwd'
-    // is supported by MI
-    //qDebug() << "PWD OUTPUT:" <<  record.toString();
-    // Gdb responses _unless_ we get an error first.
-    if (record.resultClass == GdbResultDone) {
-        QByteArray pwd = record.data.findChild("consolestreamoutput").data();
-#ifdef Q_OS_LINUX
-        // "5^done,{logstreamoutput="pwd ",consolestreamoutput
-        // ="Working directory /home/apoenitz/dev/work/test1.  "}
-        int pos = pwd.indexOf("Working directory");
-        pwd = pwd.mid(pos + 18);
-        pwd = pwd.trimmed();
-        if (pwd.endsWith('.'))
-            pwd.chop(1);
-#endif
-#ifdef Q_OS_WIN
-        FIXME: this is broken
-        // ~"Working directory C:\\Users\\Thomas\\Documents\\WBTest3\\debug.\n"
-        pwd = pwd.trimmed();
-#endif
-        m_pwd = QString::fromLocal8Bit(pwd);
-        debugMessage("PWD RESULT: " + m_pwd);
-    }
-}
-#endif
-
 void GdbEngine::handleQuerySources(const GdbResultRecord &record, const QVariant &)
 {
     if (record.resultClass == GdbResultDone) {
@@ -1484,7 +1455,7 @@ bool GdbEngine::startDebugger()
     //postCommand(_("handle SIGTERM pass nostop print"));
 
     postCommand(_("set unwindonsignal on"));
-    //postCommand(_("pwd", handleQueryPwd));
+    //postCommand(_("pwd"));
     postCommand(_("set width 0"));
     postCommand(_("set height 0"));
 
@@ -1575,7 +1546,7 @@ void GdbEngine::continueInferior()
 
 void GdbEngine::handleStart(const GdbResultRecord &response, const QVariant &)
 {
-#ifdef Q_OS_MAC
+#if defined(Q_OS_MAC)
     Q_UNUSED(response);
 #else
     if (response.resultClass == GdbResultDone) {
@@ -1860,14 +1831,16 @@ void GdbEngine::sendInsertBreakpoint(int index)
     const BreakpointData *data = qq->breakHandler()->at(index);
     QString where;
     if (data->funcName.isEmpty()) {
+#if defined(Q_OS_UNIX) && !defined(Q_OS_MAC)
         where = data->fileName;
-#ifdef Q_OS_MAC
+#endif
+#if defined(Q_OS_MAC)
         // full names do not work on Mac/MI
         QFileInfo fi(data->fileName);
         where = fi.fileName();
         //where = fi.absoluteFilePath();
 #endif
-#ifdef Q_OS_WIN
+#if defined(Q_OS_WIN)
         // full names do not work on Mac/MI
         QFileInfo fi(data->fileName);
         where = fi.fileName();
@@ -1884,19 +1857,19 @@ void GdbEngine::sendInsertBreakpoint(int index)
 
     // set up fallback in case of pending breakpoints which aren't handled
     // by the MI interface
-#ifdef Q_OS_LINUX
+#if defined(Q_OS_UNIX) && !defined(Q_OS_MAC)
     QString cmd = _("-break-insert -f ");
     //if (!data->condition.isEmpty())
     //    cmd += _("-c ") + data->condition + ' ';
     cmd += where;
 #endif
-#ifdef Q_OS_MAC
+#if defined(Q_OS_MAC)
     QString cmd = _("-break-insert -l -1 ");
     //if (!data->condition.isEmpty())
     //    cmd += "-c " + data->condition + " ";
     cmd += where;
 #endif
-#ifdef Q_OS_WIN
+#if defined(Q_OS_WIN)
     QString cmd = _("-break-insert ");
     //if (!data->condition.isEmpty())
     //    cmd += "-c " + data->condition + " ";
@@ -2027,7 +2000,7 @@ void GdbEngine::handleBreakInsert(const GdbResultRecord &record, const QVariant
     BreakHandler *handler = qq->breakHandler();
     if (record.resultClass == GdbResultDone) {
         //qDebug() << "HANDLE BREAK INSERT" << index;
-//#ifdef Q_OS_MAC
+//#if defined(Q_OS_MAC)
         // interesting only on Mac?
         BreakpointData *data = handler->at(index);
         GdbMi bkpt = record.data.findChild("bkpt");
@@ -2040,7 +2013,7 @@ void GdbEngine::handleBreakInsert(const GdbResultRecord &record, const QVariant
         const BreakpointData *data = handler->at(index);
         // Note that it is perfectly correct that the file name is put
         // in quotes but not escaped. GDB simply is like that.
-#ifdef Q_OS_LINUX
+#if defined(Q_OS_UNIX) && !defined(Q_OS_MAC)
         //QString where = "\"\\\"" + data->fileName + "\\\":"
         //    + data->lineNumber + "\"";
         QString where = _c('"') + data->fileName + _("\":")
@@ -2048,12 +2021,12 @@ void GdbEngine::handleBreakInsert(const GdbResultRecord &record, const QVariant
         // Should not happen with -break-insert -f. gdb older than 6.8?
         QTC_ASSERT(false, /**/);
 #endif
-#ifdef Q_OS_MAC
+#if defined(Q_OS_MAC)
         QFileInfo fi(data->fileName);
         QString where = _c('"') + fi.fileName() + _("\":")
             + data->lineNumber;
 #endif
-#ifdef Q_OS_WIN
+#if defined(Q_OS_WIN)
         QFileInfo fi(data->fileName);
         QString where = _c('"') + fi.fileName() + _("\":")
             + data->lineNumber;
@@ -2454,7 +2427,7 @@ void GdbEngine::handleStackListFrames(const GdbResultRecord &record, const QVari
 
         stackFrames.append(frame);
 
-#ifdef Q_OS_WIN
+#if defined(Q_OS_WIN)
         const bool isBogus =
             // Assume this is wrong and points to some strange stl_algobase
             // implementation. Happens on Karsten's XP system with Gdb 5.50
-- 
GitLab