summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/doc.pri3
-rw-r--r--share/qtcreator/gdbmacros/gdbmacros.cpp2
-rw-r--r--src/libs/cplusplus/CppBindings.cpp19
-rw-r--r--src/libs/cplusplus/FindUsages.cpp9
-rw-r--r--src/libs/cplusplus/FindUsages.h1
-rw-r--r--src/plugins/coreplugin/progressmanager/progressmanager.cpp11
-rw-r--r--src/plugins/coreplugin/progressmanager/progressmanager.h4
-rw-r--r--src/plugins/cpaster/cpasterplugin.cpp1
-rw-r--r--src/plugins/cppeditor/cppplugin.cpp35
-rw-r--r--src/plugins/cppeditor/cppplugin.h11
-rw-r--r--src/plugins/cpptools/cppcodecompletion.cpp16
-rw-r--r--src/plugins/cpptools/cppfindreferences.cpp20
-rw-r--r--src/plugins/debugger/debuggeragents.cpp4
-rw-r--r--src/plugins/debugger/gdb/gdbengine.cpp63
-rw-r--r--src/plugins/debugger/gdb/gdbengine.h4
-rw-r--r--src/plugins/debugger/stackwindow.cpp6
-rw-r--r--src/plugins/debugger/stackwindow.h1
-rw-r--r--src/plugins/debugger/watchhandler.cpp15
-rw-r--r--src/plugins/debugger/watchhandler.h3
-rw-r--r--src/plugins/find/searchresultwindow.cpp43
-rw-r--r--src/plugins/find/searchresultwindow.h9
-rw-r--r--src/plugins/help/centralwidget.cpp6
-rw-r--r--src/plugins/help/helpplugin.cpp2
-rw-r--r--src/plugins/projectexplorer/projectexplorer.cpp13
-rw-r--r--src/plugins/projectexplorer/projectexplorersettings.h18
-rw-r--r--src/plugins/projectexplorer/projectwelcomepage.cpp5
-rw-r--r--src/plugins/projectexplorer/projectwelcomepage.h1
-rw-r--r--src/plugins/projectexplorer/winguiprocess.cpp123
-rw-r--r--src/plugins/projectexplorer/winguiprocess.h3
-rw-r--r--src/plugins/qt4projectmanager/qt-s60/s60manager.cpp4
-rw-r--r--src/plugins/qt4projectmanager/qt4project.cpp20
-rw-r--r--src/plugins/qt4projectmanager/qtversionmanager.cpp5
-rw-r--r--src/plugins/texteditor/basefilefind.cpp1
-rw-r--r--src/plugins/texteditor/basetexteditor.cpp5
-rw-r--r--src/shared/cplusplus/Lexer.cpp6
-rw-r--r--src/shared/cplusplus/Parser.cpp8
-rw-r--r--src/shared/help/helpviewer.cpp12
-rw-r--r--src/shared/help/helpviewer.h4
-rw-r--r--tests/auto/debugger/tst_gdb.cpp420
-rw-r--r--tests/manual/gdbdebugger/simple/app.cpp6
40 files changed, 606 insertions, 336 deletions
diff --git a/doc/doc.pri b/doc/doc.pri
index 5c93f3d3a5..c9b423713e 100644
--- a/doc/doc.pri
+++ b/doc/doc.pri
@@ -27,9 +27,8 @@ qch_docs.depends += html_docs
qch_docs.files = $$QCH_FILE
unix:!macx {
- system("mkdir -p `dirname $$QCH_FILE` && touch $$QCH_FILE")
-
qch_docs.path = /share/doc/qtcreator
+ qch_docs.CONFIG += no_check_exist
INSTALLS += qch_docs
}
diff --git a/share/qtcreator/gdbmacros/gdbmacros.cpp b/share/qtcreator/gdbmacros/gdbmacros.cpp
index bbc6862202..2d14e7df06 100644
--- a/share/qtcreator/gdbmacros/gdbmacros.cpp
+++ b/share/qtcreator/gdbmacros/gdbmacros.cpp
@@ -1639,7 +1639,7 @@ static void qDumpQList(QDumper &d)
}
qCheckAccess(pdata);
- d.putItemCount("value", n);
+ d.putItemCount("value", nn);
d.putItem("valueeditable", "false");
d.putItem("numchild", n);
if (d.dumpChildren) {
diff --git a/src/libs/cplusplus/CppBindings.cpp b/src/libs/cplusplus/CppBindings.cpp
index acbeb6f6fd..c916ab4b8b 100644
--- a/src/libs/cplusplus/CppBindings.cpp
+++ b/src/libs/cplusplus/CppBindings.cpp
@@ -152,6 +152,25 @@ ClassBinding *NamespaceBinding::findClassBinding(Name *name, QSet<Binding *> *pr
if (processed->contains(this))
return 0;
+ if (const QualifiedNameId *q = name->asQualifiedNameId()) {
+ Binding *current = this;
+
+ for (unsigned i = 0; i < q->nameCount(); ++i) {
+ Identifier *nameId = q->nameAt(i)->identifier();
+ if (! nameId)
+ return 0;
+
+ QSet<Binding *> visited;
+ Binding *binding = current->findClassOrNamespaceBinding(nameId, &visited); // ### TODO: check recursion.
+ if (! binding)
+ return 0;
+
+ current = binding;
+ }
+
+ return current->asClassBinding();
+ }
+
processed->insert(this);
Identifier *id = name->identifier();
diff --git a/src/libs/cplusplus/FindUsages.cpp b/src/libs/cplusplus/FindUsages.cpp
index 5b3e77ee8d..d6ecca8cbf 100644
--- a/src/libs/cplusplus/FindUsages.cpp
+++ b/src/libs/cplusplus/FindUsages.cpp
@@ -59,6 +59,7 @@ void FindUsages::setGlobalNamespaceBinding(NamespaceBindingPtr globalNamespaceBi
QList<int> FindUsages::operator()(Symbol *symbol, Identifier *id, AST *ast)
{
+ _processed.clear();
_references.clear();
_declSymbol = symbol;
_id = id;
@@ -92,6 +93,9 @@ QString FindUsages::matchingLine(const Token &tk) const
void FindUsages::reportResult(unsigned tokenIndex, const QList<Symbol *> &candidates)
{
+ if (_processed.contains(tokenIndex))
+ return;
+
const bool isStrongResult = checkCandidates(candidates);
if (isStrongResult)
@@ -100,6 +104,11 @@ void FindUsages::reportResult(unsigned tokenIndex, const QList<Symbol *> &candid
void FindUsages::reportResult(unsigned tokenIndex)
{
+ if (_processed.contains(tokenIndex))
+ return;
+
+ _processed.insert(tokenIndex);
+
const Token &tk = tokenAt(tokenIndex);
const QString lineText = matchingLine(tk);
diff --git a/src/libs/cplusplus/FindUsages.h b/src/libs/cplusplus/FindUsages.h
index 9f82949380..667ad18485 100644
--- a/src/libs/cplusplus/FindUsages.h
+++ b/src/libs/cplusplus/FindUsages.h
@@ -114,6 +114,7 @@ private:
QList<int> _references;
LookupContext _previousContext;
int _inSimpleDeclaration;
+ QSet<unsigned> _processed;
};
} // end of namespace CPlusPlus
diff --git a/src/plugins/coreplugin/progressmanager/progressmanager.cpp b/src/plugins/coreplugin/progressmanager/progressmanager.cpp
index a4385b007b..a26ab5dda5 100644
--- a/src/plugins/coreplugin/progressmanager/progressmanager.cpp
+++ b/src/plugins/coreplugin/progressmanager/progressmanager.cpp
@@ -57,17 +57,22 @@ void ProgressManagerPrivate::init()
void ProgressManagerPrivate::cancelTasks(const QString &type)
{
+ bool found = false;
QMap<QFutureWatcher<void> *, QString>::iterator task = m_runningTasks.begin();
while (task != m_runningTasks.end()) {
if (task.value() != type) {
++task;
continue;
}
+ found = true;
disconnect(task.key(), SIGNAL(finished()), this, SLOT(taskFinished()));
task.key()->cancel();
delete task.key();
task = m_runningTasks.erase(task);
}
+ if (found) {
+ emit allTasksFinished(type);
+ }
}
void ProgressManagerPrivate::cancelAllRunningTasks()
@@ -88,6 +93,7 @@ FutureProgress *ProgressManagerPrivate::addTask(const QFuture<void> &future, con
m_runningTasks.insert(watcher, type);
connect(watcher, SIGNAL(finished()), this, SLOT(taskFinished()));
watcher->setFuture(future);
+ emit taskStarted(type);
return m_progressView->addTask(future, title, type, persistency);
}
@@ -101,6 +107,11 @@ void ProgressManagerPrivate::taskFinished()
QObject *taskObject = sender();
QTC_ASSERT(taskObject, return);
QFutureWatcher<void> *task = static_cast<QFutureWatcher<void> *>(taskObject);
+ QString type = m_runningTasks.value(task);
m_runningTasks.remove(task);
delete task;
+
+ if (!m_runningTasks.values().contains(type)) {
+ emit allTasksFinished(type);
+ }
}
diff --git a/src/plugins/coreplugin/progressmanager/progressmanager.h b/src/plugins/coreplugin/progressmanager/progressmanager.h
index 944b329385..ec65969d1e 100644
--- a/src/plugins/coreplugin/progressmanager/progressmanager.h
+++ b/src/plugins/coreplugin/progressmanager/progressmanager.h
@@ -51,6 +51,10 @@ public:
public slots:
virtual void cancelTasks(const QString &type) = 0;
+
+signals:
+ void taskStarted(const QString &type);
+ void allTasksFinished(const QString &type);
};
} // namespace Core
diff --git a/src/plugins/cpaster/cpasterplugin.cpp b/src/plugins/cpaster/cpasterplugin.cpp
index 5597437423..f9017c3752 100644
--- a/src/plugins/cpaster/cpasterplugin.cpp
+++ b/src/plugins/cpaster/cpasterplugin.cpp
@@ -68,6 +68,7 @@ CodepasterPlugin::CodepasterPlugin()
CodepasterPlugin::~CodepasterPlugin()
{
+ qDeleteAll(m_protocols);
}
bool CodepasterPlugin::initialize(const QStringList &arguments, QString *error_message)
diff --git a/src/plugins/cppeditor/cppplugin.cpp b/src/plugins/cppeditor/cppplugin.cpp
index f27e82bdb9..f98fb68087 100644
--- a/src/plugins/cppeditor/cppplugin.cpp
+++ b/src/plugins/cppeditor/cppplugin.cpp
@@ -43,6 +43,7 @@
#include <coreplugin/actionmanager/actionmanager.h>
#include <coreplugin/actionmanager/command.h>
#include <coreplugin/editormanager/editormanager.h>
+#include <coreplugin/progressmanager/progressmanager.h>
#include <texteditor/completionsupport.h>
#include <texteditor/fontsettings.h>
#include <texteditor/storagesettings.h>
@@ -55,7 +56,6 @@
#include <QtCore/QFileInfo>
#include <QtCore/QSettings>
#include <QtGui/QMenu>
-#include <QtGui/QAction>
using namespace CppEditor::Internal;
@@ -211,18 +211,18 @@ bool CppPlugin::initialize(const QStringList & /*arguments*/, QString *errorMess
contextMenu->addAction(cmd);
am->actionContainer(CppTools::Constants::M_TOOLS_CPP)->addAction(cmd);
- QAction *findUsagesAction = new QAction(tr("Find Usages"), this);
- cmd = am->registerAction(findUsagesAction, Constants::FIND_USAGES, context);
+ m_findUsagesAction = new QAction(tr("Find Usages"), this);
+ cmd = am->registerAction(m_findUsagesAction, Constants::FIND_USAGES, context);
cmd->setDefaultKeySequence(QKeySequence(tr("Ctrl+Shift+U")));
- connect(findUsagesAction, SIGNAL(triggered()), this, SLOT(findUsages()));
+ connect(m_findUsagesAction, SIGNAL(triggered()), this, SLOT(findUsages()));
contextMenu->addAction(cmd);
am->actionContainer(CppTools::Constants::M_TOOLS_CPP)->addAction(cmd);
- QAction *renameSymbolUnderCursorAction = new QAction(tr("Rename Symbol under Cursor"), this);
- cmd = am->registerAction(renameSymbolUnderCursorAction,
+ m_renameSymbolUnderCursorAction = new QAction(tr("Rename Symbol under Cursor"), this);
+ cmd = am->registerAction(m_renameSymbolUnderCursorAction,
Constants::RENAME_SYMBOL_UNDER_CURSOR, context);
cmd->setDefaultKeySequence(QKeySequence("CTRL+SHIFT+R"));
- connect(renameSymbolUnderCursorAction, SIGNAL(triggered()), this, SLOT(renameSymbolUnderCursor()));
+ connect(m_renameSymbolUnderCursorAction, SIGNAL(triggered()), this, SLOT(renameSymbolUnderCursor()));
contextMenu->addAction(cmd);
am->actionContainer(CppTools::Constants::M_TOOLS_CPP)->addAction(cmd);
@@ -244,7 +244,10 @@ bool CppPlugin::initialize(const QStringList & /*arguments*/, QString *errorMess
cmd = am->command(TextEditor::Constants::UN_COMMENT_SELECTION);
contextMenu->addAction(cmd);
-
+ connect(core->progressManager(), SIGNAL(taskStarted(QString)),
+ this, SLOT(onTaskStarted(QString)));
+ connect(core->progressManager(), SIGNAL(allTasksFinished(QString)),
+ this, SLOT(onAllTasksFinished(QString)));
readSettings();
return true;
}
@@ -300,4 +303,20 @@ void CppPlugin::findUsages()
editor->findUsages();
}
+void CppPlugin::onTaskStarted(const QString &type)
+{
+ if (type == CppTools::Constants::TASK_INDEX) {
+ m_renameSymbolUnderCursorAction->setEnabled(false);
+ m_findUsagesAction->setEnabled(false);
+ }
+}
+
+void CppPlugin::onAllTasksFinished(const QString &type)
+{
+ if (type == CppTools::Constants::TASK_INDEX) {
+ m_renameSymbolUnderCursorAction->setEnabled(true);
+ m_findUsagesAction->setEnabled(true);
+ }
+}
+
Q_EXPORT_PLUGIN(CppPlugin)
diff --git a/src/plugins/cppeditor/cppplugin.h b/src/plugins/cppeditor/cppplugin.h
index 6437f6e241..3456bd9baf 100644
--- a/src/plugins/cppeditor/cppplugin.h
+++ b/src/plugins/cppeditor/cppplugin.h
@@ -30,12 +30,13 @@
#ifndef CPPPLUGIN_H
#define CPPPLUGIN_H
-#include <QtCore/QtPlugin>
-#include <QtCore/QStringList>
-
#include <extensionsystem/iplugin.h>
#include <coreplugin/editormanager/ieditorfactory.h>
+#include <QtCore/QtPlugin>
+#include <QtCore/QStringList>
+#include <QtGui/QAction>
+
namespace TextEditor {
class TextEditorActionHandler;
} // namespace TextEditor
@@ -74,6 +75,8 @@ private slots:
void switchDeclarationDefinition();
void jumpToDefinition();
void renameSymbolUnderCursor();
+ void onTaskStarted(const QString &type);
+ void onAllTasksFinished(const QString &type);
void findUsages();
private:
@@ -85,6 +88,8 @@ private:
TextEditor::TextEditorActionHandler *m_actionHandler;
bool m_sortedMethodOverview;
+ QAction *m_renameSymbolUnderCursorAction;
+ QAction *m_findUsagesAction;
};
class CppEditorFactory : public Core::IEditorFactory
diff --git a/src/plugins/cpptools/cppcodecompletion.cpp b/src/plugins/cpptools/cppcodecompletion.cpp
index 3e8e1df882..9a895bb97d 100644
--- a/src/plugins/cpptools/cppcodecompletion.cpp
+++ b/src/plugins/cpptools/cppcodecompletion.cpp
@@ -1124,14 +1124,6 @@ bool CppCodeCompletion::completeMember(const QList<TypeOfExpression::Result> &ba
m_completionOperator,
&replacedDotOperator);
- if (replacedDotOperator) {
- // Replace . with ->
- int length = m_editor->position() - m_startPosition + 1;
- m_editor->setCurPos(m_startPosition - 1);
- m_editor->replace(length, QLatin1String("->"));
- ++m_startPosition;
- }
-
QList<Symbol *> classObjectCandidates;
foreach (const TypeOfExpression::Result &r, classObjectResults) {
FullySpecifiedType ty = r.first.simplified();
@@ -1150,6 +1142,14 @@ bool CppCodeCompletion::completeMember(const QList<TypeOfExpression::Result> &ba
}
}
+ if (replacedDotOperator && ! classObjectCandidates.isEmpty()) {
+ // Replace . with ->
+ int length = m_editor->position() - m_startPosition + 1;
+ m_editor->setCurPos(m_startPosition - 1);
+ m_editor->replace(length, QLatin1String("->"));
+ ++m_startPosition;
+ }
+
completeClass(classObjectCandidates, context, /*static lookup = */ false);
if (! m_completions.isEmpty())
return true;
diff --git a/src/plugins/cpptools/cppfindreferences.cpp b/src/plugins/cpptools/cppfindreferences.cpp
index 01f7668d7d..72677abf6e 100644
--- a/src/plugins/cpptools/cppfindreferences.cpp
+++ b/src/plugins/cpptools/cppfindreferences.cpp
@@ -62,7 +62,8 @@ using namespace CppTools::Internal;
using namespace CPlusPlus;
CppFindReferences::CppFindReferences(CppTools::CppModelManagerInterface *modelManager)
- : _modelManager(modelManager),
+ : QObject(modelManager),
+ _modelManager(modelManager),
_resultWindow(ExtensionSystem::PluginManager::instance()->getObject<Find::SearchResultWindow>())
{
m_watcher.setPendingResultsLimit(1);
@@ -249,7 +250,21 @@ static void applyChanges(QTextDocument *doc, const QString &text, const QList<Fi
foreach (const Find::SearchResultItem &item, items) {
const int blockNumber = item.lineNumber - 1;
QTextCursor tc(doc->findBlockByNumber(blockNumber));
- tc.setPosition(tc.position() + item.searchTermStart);
+
+ const int cursorPosition = tc.position() + item.searchTermStart;
+
+ int cursorIndex = 0;
+ for (; cursorIndex < cursors.size(); ++cursorIndex) {
+ const QTextCursor &tc = cursors.at(cursorIndex);
+
+ if (tc.position() == cursorPosition)
+ break;
+ }
+
+ if (cursorIndex != cursors.size())
+ continue; // skip this change.
+
+ tc.setPosition(cursorPosition);
tc.setPosition(tc.position() + item.searchTermLength,
QTextCursor::KeepAnchor);
cursors.append(tc);
@@ -335,6 +350,7 @@ void CppFindReferences::displayResult(int index)
void CppFindReferences::searchFinished()
{
+ _resultWindow->finishSearch();
emit changed();
}
diff --git a/src/plugins/debugger/debuggeragents.cpp b/src/plugins/debugger/debuggeragents.cpp
index 6f108cc9b9..558617d1ae 100644
--- a/src/plugins/debugger/debuggeragents.cpp
+++ b/src/plugins/debugger/debuggeragents.cpp
@@ -195,8 +195,12 @@ DisassemblerViewAgent::~DisassemblerViewAgent()
if (d->editor)
d->editor->deleteLater();
d->editor = 0;
+ delete d->locationMark;
+ d->locationMark = 0;
delete d;
d = 0;
+ delete d->locationMark;
+ d->locationMark = 0;
}
void DisassemblerViewAgent::cleanup()
diff --git a/src/plugins/debugger/gdb/gdbengine.cpp b/src/plugins/debugger/gdb/gdbengine.cpp
index 430e1a24d1..6b3076ea2d 100644
--- a/src/plugins/debugger/gdb/gdbengine.cpp
+++ b/src/plugins/debugger/gdb/gdbengine.cpp
@@ -193,6 +193,11 @@ GdbEngine::GdbEngine(DebuggerManager *manager) :
m_trkOptions->fromSettings(Core::ICore::instance()->settings());
m_gdbAdapter = 0;
+ m_commandTimer = new QTimer(this);
+ m_commandTimer->setSingleShot(true);
+ m_commandTimer->setInterval(COMMAND_TIMEOUT);
+ connect(m_commandTimer, SIGNAL(timeout()), SLOT(commandTimeout()));
+
// Needs no resetting in initializeVariables()
m_busy = false;
@@ -606,6 +611,9 @@ void GdbEngine::readGdbStandardError()
void GdbEngine::readGdbStandardOutput()
{
+ if (m_commandTimer->isActive())
+ m_commandTimer->start(); // Retrigger
+
int newstart = 0;
int scan = m_inbuffer.size();
@@ -734,7 +742,7 @@ void GdbEngine::postCommandHelper(const GdbCommand &cmd)
}
if ((cmd.flags & NeedsStop) || !m_commandsToRunOnTemporaryBreak.isEmpty()) {
- if (state() == InferiorStopped
+ if (state() == InferiorStopped || state() == InferiorUnrunnable
|| state() == InferiorStarting || state() == AdapterStarted) {
// Can be safely sent now.
flushCommand(cmd);
@@ -796,10 +804,27 @@ void GdbEngine::flushCommand(const GdbCommand &cmd0)
m_gdbAdapter->write(cmd.command.toLatin1() + "\r\n");
+ m_commandTimer->start();
+
if (cmd.flags & LosesChild)
setState(InferiorShuttingDown);
}
+void GdbEngine::commandTimeout()
+{
+ // FIXME this needs a proper message box
+ debugMessage(_("TIMED OUT WAITING FOR GDB REPLY. COMMANDS STILL IN PROGRESS:"));
+ QList<int> keys = m_cookieForToken.keys();
+ qSort(keys);
+ foreach (int key, keys) {
+ const GdbCommand &cmd = m_cookieForToken[key];
+ debugMessage(_(" %1: %2 => %3").arg(key).arg(cmd.command).arg(_(cmd.callbackName)));
+ }
+ // This is an entirely undefined state, so we just pull the emergency brake.
+ setState(EngineShuttingDown, true);
+ m_gdbProc.kill();
+}
+
void GdbEngine::handleResultRecord(GdbResponse *response)
{
//qDebug() << "TOKEN:" << response.token
@@ -927,6 +952,9 @@ void GdbEngine::handleResultRecord(GdbResponse *response)
} else {
PENDING_DEBUG("MISSING TOKENS: " << m_cookieForToken.keys());
}
+
+ if (m_cookieForToken.isEmpty())
+ m_commandTimer->stop();
}
void GdbEngine::executeDebuggerCommand(const QString &command)
@@ -1426,7 +1454,6 @@ void GdbEngine::shutdown()
m_gdbAdapter->shutdown();
// fall-through
case AdapterStartFailed: // Adapter "did something", but it did not help
- // FIXME set some timeout?
if (m_gdbProc.state() == QProcess::Running) {
postCommand(_("-gdb-exit"), GdbEngine::ExitRequest, CB(handleGdbExit));
} else {
@@ -1437,7 +1464,6 @@ void GdbEngine::shutdown()
case InferiorRunning:
case InferiorStopping:
case InferiorStopped:
- // FIXME set some timeout?
postCommand(_(m_gdbAdapter->inferiorShutdownCommand()),
NeedsStop | LosesChild, CB(handleInferiorShutdown));
break;
@@ -1446,7 +1472,6 @@ void GdbEngine::shutdown()
case InferiorShutDown:
case InferiorShutdownFailed: // Whatever
case InferiorUnrunnable:
- // FIXME set some timeout?
postCommand(_("-gdb-exit"), GdbEngine::ExitRequest, CB(handleGdbExit));
setState(EngineShuttingDown); // Do it after posting the command!
break;
@@ -3246,23 +3271,13 @@ void GdbEngine::handleVarCreate(const GdbResponse &response)
if (response.resultClass == GdbResultDone) {
data.variable = data.iname;
setWatchDataType(data, response.data.findChild("type"));
- if (hasDebuggingHelperForType(data.type)) {
- // we do not trust gdb if we have a custom dumper
- if (response.data.findChild("children").isValid())
- data.setChildrenUnneeded();
- else if (manager()->watchHandler()->isExpandedIName(data.iname))
- data.setChildrenNeeded();
- insertData(data);
- } else {
- if (response.data.findChild("children").isValid())
- data.setChildrenUnneeded();
- else if (manager()->watchHandler()->isExpandedIName(data.iname))
- data.setChildrenNeeded();
- setWatchDataChildCount(data, response.data.findChild("numchild"));
- //if (data.isValueNeeded() && data.childCount > 0)
- // data.setValue(QString());
- insertData(data);
- }
+ if (manager()->watchHandler()->isExpandedIName(data.iname)
+ && !response.data.findChild("children").isValid())
+ data.setChildrenNeeded();
+ else
+ data.setChildrenUnneeded();
+ setWatchDataChildCount(data, response.data.findChild("numchild"));
+ insertData(data);
} else {
data.setError(QString::fromLocal8Bit(response.data.findChild("msg").data()));
if (data.isWatcher()) {
@@ -3707,7 +3722,8 @@ void GdbEngine::insertData(const WatchData &data0)
void GdbEngine::handleVarListChildrenHelper(const GdbMi &item,
const WatchData &parent)
{
- //qDebug() << "VAR_LIST_CHILDREN: APPENDEE" << data.toString();
+ //qDebug() << "VAR_LIST_CHILDREN: PARENT" << parent.toString();
+ //qDebug() << "VAR_LIST_CHILDREN: ITEM" << item.toString();
QByteArray exp = item.findChild("exp").data();
QByteArray name = item.findChild("name").data();
if (isAccessSpecifier(_(exp))) {
@@ -4243,6 +4259,9 @@ bool GdbEngine::startGdb(const QStringList &args, const QString &gdb, const QStr
m_gdbProc.disconnect(); // From any previous runs
QString location = gdb;
+ const QByteArray env = qgetenv("QTC_DEBUGGER_PATH");
+ if (!env.isEmpty())
+ location = QString::fromLatin1(env);
if (location.isEmpty())
location = theDebuggerStringSetting(GdbLocation);
QStringList gdbArgs;
diff --git a/src/plugins/debugger/gdb/gdbengine.h b/src/plugins/debugger/gdb/gdbengine.h
index 6c95977dd6..aafe05b96e 100644
--- a/src/plugins/debugger/gdb/gdbengine.h
+++ b/src/plugins/debugger/gdb/gdbengine.h
@@ -49,6 +49,7 @@
QT_BEGIN_NAMESPACE
class QAction;
class QAbstractItemModel;
+class QTimer;
class QWidget;
class QMainWindow;
QT_END_NAMESPACE
@@ -228,9 +229,12 @@ private: ////////// Gdb Command Management //////////
const QVariant &cookie = QVariant());
void postCommandHelper(const GdbCommand &cmd);
void flushQueuedCommands();
+ Q_SLOT void commandTimeout();
void setTokenBarrier();
QHash<int, GdbCommand> m_cookieForToken;
+ QTimer *m_commandTimer;
+ enum { COMMAND_TIMEOUT = 20000 };
QByteArray m_pendingConsoleStreamOutput;
QByteArray m_pendingLogStreamOutput;
diff --git a/src/plugins/debugger/stackwindow.cpp b/src/plugins/debugger/stackwindow.cpp
index 910f69ea35..f92a6993fd 100644
--- a/src/plugins/debugger/stackwindow.cpp
+++ b/src/plugins/debugger/stackwindow.cpp
@@ -73,6 +73,12 @@ StackWindow::StackWindow(DebuggerManager *manager, QWidget *parent)
this, SLOT(showAddressColumn(bool)));
}
+StackWindow::~StackWindow()
+{
+ // FIXME: leak
+ //delete m_disassemblerAgent;
+}
+
void StackWindow::showAddressColumn(bool on)
{
setColumnHidden(4, !on);
diff --git a/src/plugins/debugger/stackwindow.h b/src/plugins/debugger/stackwindow.h
index 0256fbeee0..7ea221d6fe 100644
--- a/src/plugins/debugger/stackwindow.h
+++ b/src/plugins/debugger/stackwindow.h
@@ -50,6 +50,7 @@ class StackWindow : public QTreeView
public:
StackWindow(DebuggerManager *manager, QWidget *parent = 0);
+ ~StackWindow();
signals:
void frameActivated(int);
diff --git a/src/plugins/debugger/watchhandler.cpp b/src/plugins/debugger/watchhandler.cpp
index 4819753fd3..679fec5005 100644
--- a/src/plugins/debugger/watchhandler.cpp
+++ b/src/plugins/debugger/watchhandler.cpp
@@ -41,6 +41,7 @@
#include <QtCore/QDebug>
#include <QtCore/QEvent>
+
#include <QtCore/QtAlgorithms>
#include <QtCore/QTextStream>
#include <QtCore/QTimer>
@@ -361,6 +362,11 @@ WatchModel::WatchModel(WatchHandler *handler, WatchType type)
}
}
+WatchModel::~WatchModel()
+{
+ delete m_root;
+}
+
WatchItem *WatchModel::rootItem() const
{
return m_root;
@@ -420,7 +426,7 @@ void WatchModel::removeOutdated()
void WatchModel::removeOutdatedHelper(WatchItem *item)
{
if (item->generation < generationCounter) {
- removeItem(item);
+ destroyItem(item);
} else {
foreach (WatchItem *child, item->children)
removeOutdatedHelper(child);
@@ -428,7 +434,7 @@ void WatchModel::removeOutdatedHelper(WatchItem *item)
}
}
-void WatchModel::removeItem(WatchItem *item)
+void WatchModel::destroyItem(WatchItem *item)
{
WatchItem *parent = item->parent;
QModelIndex index = watchIndex(parent);
@@ -437,6 +443,7 @@ void WatchModel::removeItem(WatchItem *item)
beginRemoveRows(index, n, n);
parent->children.removeAt(n);
endRemoveRows();
+ delete item;
}
static QString parentName(const QString &iname)
@@ -1187,7 +1194,7 @@ void WatchHandler::removeData(const QString &iname)
return;
WatchItem *item = model->findItem(iname, model->m_root);
if (item)
- model->removeItem(item);
+ model->destroyItem(item);
}
void WatchHandler::watchExpression()
@@ -1302,7 +1309,7 @@ void WatchHandler::removeWatchExpression(const QString &exp)
m_watcherNames.remove(exp);
foreach (WatchItem *item, m_watchers->rootItem()->children) {
if (item->exp == exp) {
- m_watchers->removeItem(item);
+ m_watchers->destroyItem(item);
saveWatchers();
break;
}
diff --git a/src/plugins/debugger/watchhandler.h b/src/plugins/debugger/watchhandler.h
index 155d1de411..dfd36da559 100644
--- a/src/plugins/debugger/watchhandler.h
+++ b/src/plugins/debugger/watchhandler.h
@@ -180,6 +180,7 @@ class WatchModel : public QAbstractItemModel
private:
explicit WatchModel(WatchHandler *handler, WatchType type);
+ virtual ~WatchModel();
QVariant data(const QModelIndex &index, int role) const;
bool setData(const QModelIndex &index, const QVariant &value, int role);
@@ -209,7 +210,7 @@ private:
void removeOutdated();
void removeOutdatedHelper(WatchItem *item);
WatchItem *rootItem() const;
- void removeItem(WatchItem *item);
+ void destroyItem(WatchItem *item);
void emitDataChanged(int column,
const QModelIndex &parentIndex = QModelIndex());
diff --git a/src/plugins/find/searchresultwindow.cpp b/src/plugins/find/searchresultwindow.cpp
index c60e2d6c9e..5bbf06af51 100644
--- a/src/plugins/find/searchresultwindow.cpp
+++ b/src/plugins/find/searchresultwindow.cpp
@@ -53,7 +53,8 @@ static const QString SETTINGSKEYEXPANDRESULTS("ExpandResults");
SearchResultWindow::SearchResultWindow()
: m_currentSearch(0),
- m_isShowingReplaceUI(false)
+ m_isShowingReplaceUI(false),
+ m_focusReplaceEdit(false)
{
m_widget = new QStackedWidget;
m_widget->setWindowTitle(name());
@@ -124,15 +125,13 @@ void SearchResultWindow::setShowReplaceUI(bool show)
m_isShowingReplaceUI = show;
}
-bool SearchResultWindow::isShowingReplaceUI() const
-{
- return m_isShowingReplaceUI;
-}
-
void SearchResultWindow::handleReplaceButton()
{
QTC_ASSERT(m_currentSearch, return);
- m_currentSearch->replaceButtonClicked(m_replaceTextEdit->text(), checkedItems());
+ // check if button is actually enabled, because this is also triggered
+ // by pressing return in replace line edit
+ if (m_replaceButton->isEnabled())
+ m_currentSearch->replaceButtonClicked(m_replaceTextEdit->text(), checkedItems());
}
QList<SearchResultItem> SearchResultWindow::checkedItems() const
@@ -177,9 +176,19 @@ SearchResult *SearchResultWindow::startNewSearch(SearchMode searchOrSearchAndRep
return m_currentSearch;
}
+void SearchResultWindow::finishSearch()
+{
+ if (m_items.count()) {
+ m_replaceButton->setEnabled(true);
+ } else {
+ showNoMatchesFound();
+ }
+}
+
void SearchResultWindow::clearContents()
{
- setReplaceUIEnabled(false);
+ m_replaceTextEdit->setEnabled(false);
+ m_replaceButton->setEnabled(false);
m_replaceTextEdit->clear();
m_searchResultTreeView->clear();
m_items.clear();
@@ -189,7 +198,8 @@ void SearchResultWindow::clearContents()
void SearchResultWindow::showNoMatchesFound()
{
- setReplaceUIEnabled(false);
+ m_replaceTextEdit->setEnabled(false);
+ m_replaceButton->setEnabled(false);
m_widget->setCurrentWidget(m_noMatchesFoundDisplay);
}
@@ -220,7 +230,8 @@ void SearchResultWindow::setFocus()
m_searchResultTreeView->setFocus();
} else {
if (!m_widget->focusWidget()
- || m_widget->focusWidget() == m_replaceTextEdit) {
+ || m_widget->focusWidget() == m_replaceTextEdit
+ || m_focusReplaceEdit) {
m_replaceTextEdit->setFocus();
} else {
m_searchResultTreeView->setFocus();
@@ -257,20 +268,16 @@ void SearchResultWindow::addResult(const QString &fileName, int lineNumber, cons
m_items.append(item);
m_searchResultTreeView->appendResultLine(index, fileName, lineNumber, rowText, searchTermStart, searchTermLength);
if (index == 0) {
- setReplaceUIEnabled(true);
- // We didn't have an item before, set the focus to the m_searchResultTreeView
+ m_replaceTextEdit->setEnabled(true);
+ // We didn't have an item before, set the focus to the search widget
+ m_focusReplaceEdit = true;
setFocus();
+ m_focusReplaceEdit = false;
m_searchResultTreeView->selectionModel()->select(m_searchResultTreeView->model()->index(0, 0, QModelIndex()), QItemSelectionModel::Select);
emit navigateStateChanged();
}
}
-void SearchResultWindow::setReplaceUIEnabled(bool enabled)
-{
- m_replaceTextEdit->setEnabled(enabled);
- m_replaceButton->setEnabled(enabled);
-}
-
void SearchResultWindow::handleExpandCollapseToolButton(bool checked)
{
m_searchResultTreeView->setAutoExpandResults(checked);
diff --git a/src/plugins/find/searchresultwindow.h b/src/plugins/find/searchresultwindow.h
index c41ca3424f..e8996f8c02 100644
--- a/src/plugins/find/searchresultwindow.h
+++ b/src/plugins/find/searchresultwindow.h
@@ -103,9 +103,6 @@ public:
void setTextEditorFont(const QFont &font);
- void setShowReplaceUI(bool show);
- bool isShowingReplaceUI() const;
-
void setTextToReplace(const QString &textToReplace);
QString textToReplace() const;
@@ -114,17 +111,18 @@ public:
public slots:
void clearContents();
- void showNoMatchesFound();
void addResult(const QString &fileName, int lineNumber, const QString &lineText,
int searchTermStart, int searchTermLength, const QVariant &userData = QVariant());
+ void finishSearch();
private slots:
void handleExpandCollapseToolButton(bool checked);
void handleJumpToSearchResult(int index, bool checked);
void handleReplaceButton();
- void setReplaceUIEnabled(bool enabled);
+ void showNoMatchesFound();
private:
+ void setShowReplaceUI(bool show);
void readSettings();
void writeSettings();
QList<SearchResultItem> checkedItems() const;
@@ -140,6 +138,7 @@ private:
SearchResult *m_currentSearch;
QList<SearchResultItem> m_items;
bool m_isShowingReplaceUI;
+ bool m_focusReplaceEdit;
};
} // namespace Find
diff --git a/src/plugins/help/centralwidget.cpp b/src/plugins/help/centralwidget.cpp
index 102a84a6d8..0080f062b8 100644
--- a/src/plugins/help/centralwidget.cpp
+++ b/src/plugins/help/centralwidget.cpp
@@ -220,7 +220,7 @@ void CentralWidget::setSource(const QUrl &url)
qobject_cast<HelpViewer*>(tabWidget->widget(lastTabPage));
if (!viewer && !lastViewer) {
- viewer = new HelpViewer(helpEngine, this);
+ viewer = new HelpViewer(helpEngine, this, this);
viewer->installEventFilter(this);
lastTabPage = tabWidget->addTab(viewer, QString());
tabWidget->setCurrentIndex(lastTabPage);
@@ -428,7 +428,7 @@ void CentralWidget::setGlobalActions(const QList<QAction*> &actions)
void CentralWidget::setSourceInNewTab(const QUrl &url, int zoom)
{
- HelpViewer* viewer = new HelpViewer(helpEngine, this);
+ HelpViewer* viewer = new HelpViewer(helpEngine, this, this);
viewer->installEventFilter(this);
viewer->setZoom(zoom);
viewer->setSource(url);
@@ -448,7 +448,7 @@ void CentralWidget::setSourceInNewTab(const QUrl &url, int zoom)
HelpViewer *CentralWidget::newEmptyTab()
{
- HelpViewer* viewer = new HelpViewer(helpEngine, this);
+ HelpViewer* viewer = new HelpViewer(helpEngine, this, this);
viewer->installEventFilter(this);
viewer->setFocus(Qt::OtherFocusReason);
#if defined(QT_NO_WEBKIT)
diff --git a/src/plugins/help/helpplugin.cpp b/src/plugins/help/helpplugin.cpp
index 6a57c583e0..da93cd6795 100644
--- a/src/plugins/help/helpplugin.cpp
+++ b/src/plugins/help/helpplugin.cpp
@@ -491,7 +491,7 @@ void HelpPlugin::createRightPaneSideBar()
addAutoReleasedObject(new Core::BaseRightPaneWidget(m_rightPaneSideBar));
rightPaneLayout->addWidget(w);
- m_helpViewerForSideBar = new HelpViewer(m_helpEngine, 0);
+ m_helpViewerForSideBar = new HelpViewer(m_helpEngine, 0, m_rightPaneSideBar);
Aggregation::Aggregate *agg = new Aggregation::Aggregate();
agg->add(m_helpViewerForSideBar);
agg->add(new HelpViewerFindSupport(m_helpViewerForSideBar));
diff --git a/src/plugins/projectexplorer/projectexplorer.cpp b/src/plugins/projectexplorer/projectexplorer.cpp
index bf4063ecb7..9821118e87 100644
--- a/src/plugins/projectexplorer/projectexplorer.cpp
+++ b/src/plugins/projectexplorer/projectexplorer.cpp
@@ -207,6 +207,7 @@ ProjectExplorerPlugin::ProjectExplorerPlugin()
ProjectExplorerPlugin::~ProjectExplorerPlugin()
{
removeObject(d->m_welcomePlugin);
+ delete d->m_welcomePlugin;
removeObject(this);
delete d;
}
@@ -1869,16 +1870,14 @@ void ProjectExplorerPlugin::showInGraphicalShell()
{
QTC_ASSERT(d->m_currentNode, return)
#if defined(Q_OS_WIN)
- QString explorer = Environment::systemEnvironment().searchInPath("explorer.exe");
+ const QString explorer = Environment::systemEnvironment().searchInPath("explorer.exe");
if (explorer.isEmpty()) {
QMessageBox::warning(Core::ICore::instance()->mainWindow(),
tr("Launching Windows Explorer failed"),
tr("Could not find explorer.exe in path to launch Windows Explorer."));
return;
}
- QProcess::execute(explorer,
- QStringList() << QString("/select,%1")
- .arg(QDir::toNativeSeparators(d->m_currentNode->path())));
+ QProcess::startDetached(explorer, QStringList(QLatin1String("/select,") + QDir::toNativeSeparators(d->m_currentNode->path())));
#elif defined(Q_OS_MAC)
QProcess::execute("/usr/bin/osascript", QStringList()
<< "-e"
@@ -1889,15 +1888,15 @@ void ProjectExplorerPlugin::showInGraphicalShell()
<< "tell application \"Finder\" to activate");
#else
// we cannot select a file here, because no file browser really supports it...
- QFileInfo fileInfo(d->m_currentNode->path());
- QString xdgopen = Environment::systemEnvironment().searchInPath("xdg-open");
+ const QFileInfo fileInfo(d->m_currentNode->path());
+ const QString xdgopen = Environment::systemEnvironment().searchInPath("xdg-open");
if (xdgopen.isEmpty()) {
QMessageBox::warning(Core::ICore::instance()->mainWindow(),
tr("Launching a file explorer failed"),
tr("Could not find xdg-open to launch the native file explorer."));
return;
}
- QProcess::execute(xdgopen, QStringList() << fileInfo.path());
+ QProcess::startDetached(xdgopen, QStringList(fileInfo.path()));
#endif
}
diff --git a/src/plugins/projectexplorer/projectexplorersettings.h b/src/plugins/projectexplorer/projectexplorersettings.h
index 995b4dface..764340c1f8 100644
--- a/src/plugins/projectexplorer/projectexplorersettings.h
+++ b/src/plugins/projectexplorer/projectexplorersettings.h
@@ -35,18 +35,24 @@ namespace Internal {
struct ProjectExplorerSettings
{
+ ProjectExplorerSettings() : buildBeforeRun(true), saveBeforeBuild(false),
+ showCompilerOutput(false), useJom(true) {}
+
bool buildBeforeRun;
bool saveBeforeBuild;
bool showCompilerOutput;
bool useJom;
- bool operator==(const ProjectExplorerSettings &other) const {
- return this->buildBeforeRun == other.buildBeforeRun
- && this->saveBeforeBuild == other.saveBeforeBuild
- && this->showCompilerOutput == other.showCompilerOutput
- && this->useJom == other.useJom;
- }
};
+inline bool operator==(const ProjectExplorerSettings &p1, const ProjectExplorerSettings &p2)
+{
+ return p1.buildBeforeRun == p2.buildBeforeRun
+ && p1.saveBeforeBuild == p2.saveBeforeBuild
+ && p1.showCompilerOutput == p2.showCompilerOutput
+ && p1.useJom == p2.useJom;
+}
+
+
} // namespace ProjectExplorer
} // namespace Internal
diff --git a/src/plugins/projectexplorer/projectwelcomepage.cpp b/src/plugins/projectexplorer/projectwelcomepage.cpp
index 1db7881d54..9db59823bd 100644
--- a/src/plugins/projectexplorer/projectwelcomepage.cpp
+++ b/src/plugins/projectexplorer/projectwelcomepage.cpp
@@ -39,6 +39,11 @@ ProjectWelcomePage::ProjectWelcomePage()
}
+ProjectWelcomePage::~ProjectWelcomePage()
+{
+
+}
+
QWidget* ProjectWelcomePage::page()
{
return m_page;
diff --git a/src/plugins/projectexplorer/projectwelcomepage.h b/src/plugins/projectexplorer/projectwelcomepage.h
index a3dc97942b..4fb72cdc9d 100644
--- a/src/plugins/projectexplorer/projectwelcomepage.h
+++ b/src/plugins/projectexplorer/projectwelcomepage.h
@@ -42,6 +42,7 @@ class ProjectWelcomePage : public Utils::IWelcomePage
Q_OBJECT
public:
ProjectWelcomePage();
+ ~ProjectWelcomePage();
QWidget *page();
QString title() const { return tr("Develop"); }
diff --git a/src/plugins/projectexplorer/winguiprocess.cpp b/src/plugins/projectexplorer/winguiprocess.cpp
index 961a352dbe..71ea57a749 100644
--- a/src/plugins/projectexplorer/winguiprocess.cpp
+++ b/src/plugins/projectexplorer/winguiprocess.cpp
@@ -101,72 +101,81 @@ void WinGuiProcess::run()
ZeroMemory(m_pid, sizeof(PROCESS_INFORMATION));
m_exitCode = 0;
+ bool started = false;
HANDLE bufferReadyEvent = NULL;
HANDLE dataReadyEvent = NULL;
HANDLE sharedFile = NULL;
- LPVOID sharedMem = NULL;
-
- bool dbgInterface = setupDebugInterface(bufferReadyEvent, dataReadyEvent, sharedFile, sharedMem);
-
- QString cmdLine = createWinCommandline(m_program, m_args);
- bool success = CreateProcessW(0, (WCHAR*)cmdLine.utf16(),
- 0, 0, TRUE, CREATE_UNICODE_ENVIRONMENT,
- environment().isEmpty() ? 0
- : createWinEnvironment(fixWinEnvironment(environment())).data(),
- workingDirectory().isEmpty() ? 0
- : (WCHAR*)QDir::convertSeparators(workingDirectory()).utf16(),
- &si, m_pid);
-
- if (!success) {
- emit processError(tr("The process could not be started!"));
- delete m_pid;
- m_pid = 0;
- return;
- }
+ LPVOID sharedMem = 0;
- if (!dbgInterface) {
- emit receivedDebugOutput(tr("Cannot retrieve debugging output!"));
- WaitForSingleObject(m_pid->hProcess, INFINITE);
- } else {
- LPSTR message;
- LPDWORD processId;
- HANDLE toWaitFor[2];
-
- message = reinterpret_cast<LPSTR>(sharedMem) + sizeof(DWORD);
- processId = reinterpret_cast<LPDWORD>(sharedMem);
-
- SetEvent(bufferReadyEvent);
-
- toWaitFor[0] = dataReadyEvent;
- toWaitFor[1] = m_pid->hProcess;
-
- for (bool stop = false; !stop;) {
- DWORD ret = WaitForMultipleObjects(2, toWaitFor, FALSE, INFINITE);
-
- switch (ret) {
- case WAIT_OBJECT_0 + 0:
- if (*processId == m_pid->dwProcessId)
- emit receivedDebugOutput(QString::fromLocal8Bit(message));
- SetEvent(bufferReadyEvent);
- break;
- case WAIT_OBJECT_0 + 1:
- stop = true;
- break;
- }
+ do {
+
+ const bool dbgInterface = setupDebugInterface(bufferReadyEvent, dataReadyEvent, sharedFile, sharedMem);
+
+ const QString cmdLine = createWinCommandline(m_program, m_args);
+ started = CreateProcessW(0, (WCHAR*)cmdLine.utf16(),
+ 0, 0, TRUE, CREATE_UNICODE_ENVIRONMENT,
+ environment().isEmpty() ? 0
+ : createWinEnvironment(fixWinEnvironment(environment())).data(),
+ workingDirectory().isEmpty() ? 0
+ : (WCHAR*)QDir::convertSeparators(workingDirectory()).utf16(),
+ &si, m_pid);
+
+ if (!started) {
+ emit processError(tr("The process could not be started!"));
+ break;
}
- }
- GetExitCodeProcess(m_pid->hProcess, &m_exitCode);
- emit processFinished(static_cast<int>(m_exitCode));
+ if (!dbgInterface) {
+ emit receivedDebugOutput(tr("Cannot retrieve debugging output!"));
+ WaitForSingleObject(m_pid->hProcess, INFINITE);
+ } else {
+ LPSTR message;
+ LPDWORD processId;
+ HANDLE toWaitFor[2];
+
+ message = reinterpret_cast<LPSTR>(sharedMem) + sizeof(DWORD);
+ processId = reinterpret_cast<LPDWORD>(sharedMem);
+
+ SetEvent(bufferReadyEvent);
+
+ toWaitFor[0] = dataReadyEvent;
+ toWaitFor[1] = m_pid->hProcess;
+
+ for (bool stop = false; !stop;) {
+ DWORD ret = WaitForMultipleObjects(2, toWaitFor, FALSE, INFINITE);
+
+ switch (ret) {
+ case WAIT_OBJECT_0 + 0:
+ if (*processId == m_pid->dwProcessId)
+ emit receivedDebugOutput(QString::fromLocal8Bit(message));
+ SetEvent(bufferReadyEvent);
+ break;
+ case WAIT_OBJECT_0 + 1:
+ stop = true;
+ break;
+ }
+ }
+ }
+ } while (false);
- UnmapViewOfFile(sharedMem);
- CloseHandle(sharedFile);
- CloseHandle(bufferReadyEvent);
- CloseHandle(dataReadyEvent);
- CloseHandle(m_pid->hProcess);
- CloseHandle(m_pid->hThread);
+ if (started) {
+ GetExitCodeProcess(m_pid->hProcess, &m_exitCode);
+ emit processFinished(static_cast<int>(m_exitCode));
+ }
+ if (sharedMem)
+ UnmapViewOfFile(sharedMem);
+ if (sharedFile != NULL)
+ CloseHandle(sharedFile);
+ if (bufferReadyEvent != NULL)
+ CloseHandle(bufferReadyEvent);
+ if (dataReadyEvent != NULL)
+ CloseHandle(dataReadyEvent);
+ if (m_pid->hProcess != NULL)
+ CloseHandle(m_pid->hProcess);
+ if (m_pid->hThread != NULL)
+ CloseHandle(m_pid->hThread);
delete m_pid;
m_pid = 0;
}
diff --git a/src/plugins/projectexplorer/winguiprocess.h b/src/plugins/projectexplorer/winguiprocess.h
index 460651ff12..c3ffee1e77 100644
--- a/src/plugins/projectexplorer/winguiprocess.h
+++ b/src/plugins/projectexplorer/winguiprocess.h
@@ -42,6 +42,9 @@ using namespace Utils;
namespace ProjectExplorer {
namespace Internal {
+/* Captures the debug output of a Windows GUI application (which
+ * would otherwise not be visible) using the debug interface and
+ * emits via a signal. */
class WinGuiProcess : public QThread, public AbstractProcess
{
Q_OBJECT
diff --git a/src/plugins/qt4projectmanager/qt-s60/s60manager.cpp b/src/plugins/qt4projectmanager/qt-s60/s60manager.cpp
index a45ebe44e2..74e9ceb0b6 100644
--- a/src/plugins/qt4projectmanager/qt-s60/s60manager.cpp
+++ b/src/plugins/qt4projectmanager/qt-s60/s60manager.cpp
@@ -132,8 +132,10 @@ S60Manager::S60Manager(QObject *parent)
S60Manager::~S60Manager()
{
ExtensionSystem::PluginManager *pm = ExtensionSystem::PluginManager::instance();
- for (int i = m_pluginObjects.size() - 1; i >= 0; i--)
+ for (int i = m_pluginObjects.size() - 1; i >= 0; i--) {
pm->removeObject(m_pluginObjects.at(i));
+ delete m_pluginObjects.at(i);
+ }
}
void S60Manager::addAutoReleasedObject(QObject *o)
diff --git a/src/plugins/qt4projectmanager/qt4project.cpp b/src/plugins/qt4projectmanager/qt4project.cpp
index 2a5970e582..e75cb795ec 100644
--- a/src/plugins/qt4projectmanager/qt4project.cpp
+++ b/src/plugins/qt4projectmanager/qt4project.cpp
@@ -535,8 +535,6 @@ void Qt4Project::updateCodeModel()
if (debug)
qDebug()<<"Qt4Project::updateCodeModel()";
- // TODO figure out the correct ordering of #include directories
-
CppTools::CppModelManagerInterface *modelmanager =
ExtensionSystem::PluginManager::instance()
->getObject<CppTools::CppModelManagerInterface>();
@@ -570,7 +568,7 @@ void Qt4Project::updateCodeModel()
const QHash<QString, QString> versionInfo = qtVersion(activeBuildConfiguration())->versionInfo();
const QString newQtIncludePath = versionInfo.value(QLatin1String("QT_INSTALL_HEADERS"));
- predefinedIncludePaths.prepend(newQtIncludePath);
+ predefinedIncludePaths.append(newQtIncludePath);
QDir dir(newQtIncludePath);
foreach (QFileInfo info, dir.entryInfoList(QDir::Dirs)) {
const QString path = info.fileName();
@@ -578,7 +576,7 @@ void Qt4Project::updateCodeModel()
if (path == QLatin1String("Qt"))
continue; // skip $QT_INSTALL_HEADERS/Qt. There's no need to include it.
else if (path.startsWith(QLatin1String("Qt")) || path == QLatin1String("phonon"))
- predefinedIncludePaths.prepend(info.absoluteFilePath());
+ predefinedIncludePaths.append(info.absoluteFilePath());
}
FindQt4ProFiles findQt4ProFiles;
@@ -589,13 +587,13 @@ void Qt4Project::updateCodeModel()
#ifdef Q_OS_MAC
const QString newQtLibsPath = versionInfo.value(QLatin1String("QT_INSTALL_LIBS"));
- allFrameworkPaths.prepend(newQtLibsPath);
+ allFrameworkPaths.append(newQtLibsPath);
// put QtXXX.framework/Headers directories in include path since that qmake's behavior
QDir frameworkDir(newQtLibsPath);
foreach (QFileInfo info, frameworkDir.entryInfoList(QDir::Dirs)) {
if (! info.fileName().startsWith(QLatin1String("Qt")))
continue;
- allIncludePaths.prepend(info.absoluteFilePath()+"/Headers");
+ allIncludePaths.append(info.absoluteFilePath()+"/Headers");
}
#endif
@@ -632,9 +630,9 @@ void Qt4Project::updateCodeModel()
const QStringList proIncludePaths = pro->variableValue(IncludePathVar);
foreach (const QString &includePath, proIncludePaths) {
if (!allIncludePaths.contains(includePath))
- allIncludePaths.prepend(includePath);
+ allIncludePaths.append(includePath);
if (!info.includes.contains(includePath))
- info.includes.prepend(includePath);
+ info.includes.append(includePath);
}
{ // Pkg Config support
@@ -646,13 +644,13 @@ void Qt4Project::updateCodeModel()
process.waitForFinished();
QString result = process.readAllStandardOutput();
foreach(const QString &part, result.trimmed().split(' ', QString::SkipEmptyParts)) {
- info.includes.prepend(part.mid(2)); // Chop off "-I"
+ info.includes.append(part.mid(2)); // Chop off "-I"
}
}
}
// Add mkspec directory
- info.includes.prepend(qtVersion(activeBuildConfiguration())->mkspecPath());
+ info.includes.append(qtVersion(activeBuildConfiguration())->mkspecPath());
info.frameworkPaths = allFrameworkPaths;
@@ -666,7 +664,7 @@ void Qt4Project::updateCodeModel()
}
// Add mkspec directory
- allIncludePaths.prepend(qtVersion(activeBuildConfiguration())->mkspecPath());
+ allIncludePaths.append(qtVersion(activeBuildConfiguration())->mkspecPath());
// Dump things out
// This is debugging output...
diff --git a/src/plugins/qt4projectmanager/qtversionmanager.cpp b/src/plugins/qt4projectmanager/qtversionmanager.cpp
index ab028a43eb..032dc8734e 100644
--- a/src/plugins/qt4projectmanager/qtversionmanager.cpp
+++ b/src/plugins/qt4projectmanager/qtversionmanager.cpp
@@ -395,8 +395,7 @@ void QtVersionManager::setNewQtVersions(QList<QtVersion *> newVersions, int newD
}
qDeleteAll(m_versions);
m_versions.clear();
- foreach(QtVersion *version, newVersions)
- m_versions.append(new QtVersion(*version));
+ m_versions = newVersions;
if (versionPathsChanged)
updateDocumentation();
updateUniqueIdToIndexMap();
@@ -416,8 +415,6 @@ void QtVersionManager::setNewQtVersions(QList<QtVersion *> newVersions, int newD
writeVersionsIntoSettings();
}
-
-
///
/// QtVersion
///
diff --git a/src/plugins/texteditor/basefilefind.cpp b/src/plugins/texteditor/basefilefind.cpp
index 5126d2e96a..97479b37c2 100644
--- a/src/plugins/texteditor/basefilefind.cpp
+++ b/src/plugins/texteditor/basefilefind.cpp
@@ -121,6 +121,7 @@ void BaseFileFind::displayResult(int index) {
void BaseFileFind::searchFinished()
{
+ m_resultWindow->finishSearch();
m_isSearching = false;
m_resultLabel = 0;
emit changed();
diff --git a/src/plugins/texteditor/basetexteditor.cpp b/src/plugins/texteditor/basetexteditor.cpp
index 8176f83802..cd406907e0 100644
--- a/src/plugins/texteditor/basetexteditor.cpp
+++ b/src/plugins/texteditor/basetexteditor.cpp
@@ -1990,8 +1990,9 @@ void BaseTextEditor::paintEvent(QPaintEvent *e)
if (d->m_visibleWrapColumn > 0) {
lineX = fontMetrics().averageCharWidth() * d->m_visibleWrapColumn + offset.x() + 4;
- painter.fillRect(QRectF(lineX, 0, viewportRect.width() - lineX, viewportRect.height()),
- d->m_ifdefedOutFormat.background());
+ if (lineX < viewportRect.width())
+ painter.fillRect(QRectF(lineX, 0, viewportRect.width() - lineX, viewportRect.height()),
+ d->m_ifdefedOutFormat.background());
}
// // keep right margin clean from full-width selection
diff --git a/src/shared/cplusplus/Lexer.cpp b/src/shared/cplusplus/Lexer.cpp
index a0cc9495d8..f8f1b6f133 100644
--- a/src/shared/cplusplus/Lexer.cpp
+++ b/src/shared/cplusplus/Lexer.cpp
@@ -603,7 +603,7 @@ void Lexer::scan_helper(Token *tok)
do {
yyinp();
- if (! (isalnum(_yychar) || _yychar == '_'))
+ if (! (isalnum(_yychar) || _yychar == '_' || _yychar == '$'))
break;
} while (_yychar);
@@ -674,9 +674,9 @@ void Lexer::scan_helper(Token *tok)
if (control())
tok->string = control()->findOrInsertStringLiteral(yytext, yylen);
- } else if (std::isalpha(ch) || ch == '_') {
+ } else if (std::isalpha(ch) || ch == '_' || ch == '$') {
const char *yytext = _currentChar - 1;
- while (std::isalnum(_yychar) || _yychar == '_')
+ while (std::isalnum(_yychar) || _yychar == '_' || _yychar == '$')
yyinp();
int yylen = _currentChar - yytext;
if (f._scanKeywords)
diff --git a/src/shared/cplusplus/Parser.cpp b/src/shared/cplusplus/Parser.cpp
index 835b2c11c8..ca26cb629e 100644
--- a/src/shared/cplusplus/Parser.cpp
+++ b/src/shared/cplusplus/Parser.cpp
@@ -1200,6 +1200,14 @@ bool Parser::parseDeclarator(DeclaratorAST *&node, bool stopAtCppInitializer)
break;
}
+ if (LA() == T___ASM__ && LA(2) == T_LPAREN) { // ### store the asm specifier in the AST
+ consumeToken(); // skip __asm__
+ consumeToken(); // skip T_LPAREN
+
+ if (skipUntil(T_RPAREN))
+ consumeToken(); // skip T_RPAREN
+ }
+
SpecifierAST **spec_ptr = &node->post_attributes;
while (LA() == T___ATTRIBUTE__) {
parseAttributeSpecifier(*spec_ptr);
diff --git a/src/shared/help/helpviewer.cpp b/src/shared/help/helpviewer.cpp
index 83fd5731db..4d6ecc7466 100644
--- a/src/shared/help/helpviewer.cpp
+++ b/src/shared/help/helpviewer.cpp
@@ -230,14 +230,14 @@ bool HelpPage::acceptNavigationRequest(QWebFrame *,
return false;
}
-HelpViewer::HelpViewer(QHelpEngine *engine, Help::Internal::CentralWidget *parent)
+HelpViewer::HelpViewer(QHelpEngine *engine, Help::Internal::CentralWidget *central, QWidget *parent)
: QWebView(parent)
, helpEngine(engine)
- , parentWidget(parent)
+ , parentWidget(central)
, multiTabsAllowed(true)
, loadFinished(false)
{
- setPage(new HelpPage(parent, helpEngine, this));
+ setPage(new HelpPage(central, helpEngine, this));
settings()->setAttribute(QWebSettings::PluginsEnabled, false);
settings()->setAttribute(QWebSettings::JavaEnabled, false);
@@ -245,7 +245,7 @@ HelpViewer::HelpViewer(QHelpEngine *engine, Help::Internal::CentralWidget *paren
QAction* action = pageAction(QWebPage::OpenLinkInNewWindow);
action->setText(tr("Open Link in New Tab"));
- if (!parent) {
+ if (!central) {
multiTabsAllowed = false;
action->setVisible(false);
}
@@ -378,13 +378,13 @@ void HelpViewer::setLoadFinished(bool ok)
#else // !defined(QT_NO_WEBKIT)
-HelpViewer::HelpViewer(QHelpEngine *engine, Help::Internal::CentralWidget *parent)
+HelpViewer::HelpViewer(QHelpEngine *engine, Help::Internal::CentralWidget *central, QWidget *parent)
: QTextBrowser(parent)
, zoomCount(0)
, controlPressed(false)
, lastAnchor(QString())
, helpEngine(engine)
- , parentWidget(parent)
+ , parentWidget(central)
{
document()->setDocumentMargin(8);
}
diff --git a/src/shared/help/helpviewer.h b/src/shared/help/helpviewer.h
index 6f473eccb6..8b6ea20f2f 100644
--- a/src/shared/help/helpviewer.h
+++ b/src/shared/help/helpviewer.h
@@ -64,7 +64,7 @@ class HelpViewer : public QWebView
Q_OBJECT
public:
- HelpViewer(QHelpEngine *helpEngine, Help::Internal::CentralWidget *parent);
+ HelpViewer(QHelpEngine *helpEngine, Help::Internal::CentralWidget *central, QWidget *parent);
void setSource(const QUrl &url);
inline QUrl source() const
@@ -130,7 +130,7 @@ class HelpViewer : public QTextBrowser
Q_OBJECT
public:
- HelpViewer(QHelpEngine *helpEngine, Help::Internal::CentralWidget *parent);
+ HelpViewer(QHelpEngine *helpEngine, Help::Internal::CentralWidget *central, QWidget *parent);
void setSource(const QUrl &url);
void zoomIn(int range = 1);
diff --git a/tests/auto/debugger/tst_gdb.cpp b/tests/auto/debugger/tst_gdb.cpp
index 9242773bf3..b6a4e2ab74 100644
--- a/tests/auto/debugger/tst_gdb.cpp
+++ b/tests/auto/debugger/tst_gdb.cpp
@@ -170,6 +170,8 @@ private slots:
void dump_misc();
void dump_std_list();
void dump_std_vector();
+ void dump_std_string();
+ void dump_std_wstring();
void dump_Foo();
void dump_QByteArray();
void dump_QChar();
@@ -182,6 +184,7 @@ private slots:
void dump_QList_QString();
void dump_QList_QString3();
void dump_QList_Int3();
+ void dump_QMap_QString_QString();
void dump_QPoint();
void dump_QRect();
void dump_QSharedPointer();
@@ -748,9 +751,9 @@ void tst_Gdb::dump_Foo()
{
prepare("dump_Foo");
next();
- run("B","{iname='local.f',addr='-',name='f',type='Foo',"
+ run("B","{iname='local.f',name='f',type='Foo',"
"value='-',numchild='5'}", "", 0);
- run("B","{iname='local.f',addr='-',name='f',type='Foo',"
+ run("B","{iname='local.f',name='f',type='Foo',"
"value='-',numchild='5',children=["
"{iname='local.f.a',name='a',type='int',value='0',numchild='0'},"
"{iname='local.f.b',name='b',type='int',value='2',numchild='0'},"
@@ -782,9 +785,9 @@ void tst_Gdb::dump_array()
prepare("dump_array_char");
next();
// FIXME: numchild should be '4', not '1'
- run("B","{iname='local.s',addr='-',name='s',type='char [4]',"
+ run("B","{iname='local.s',name='s',type='char [4]',"
"value='-',numchild='1'}", "");
- run("B","{iname='local.s',addr='-',name='s',type='char [4]',"
+ run("B","{iname='local.s',name='s',type='char [4]',"
"value='-',numchild='1',childtype='char',childnumchild='0',"
"children=[{value='88 'X''},{value='89 'Y''},{value='90 'Z''},"
"{value='0 '\\\\000''}]}",
@@ -793,9 +796,9 @@ void tst_Gdb::dump_array()
prepare("dump_array_int");
next();
// FIXME: numchild should be '3', not '1'
- run("B","{iname='local.s',addr='-',name='s',type='int [3]',"
+ run("B","{iname='local.s',name='s',type='int [3]',"
"value='-',numchild='1'}", "");
- run("B","{iname='local.s',addr='-',name='s',type='int [3]',"
+ run("B","{iname='local.s',name='s',type='int [3]',"
"value='-',numchild='1',childtype='int',childnumchild='0',"
"children=[{value='1'},{value='2'},{value='3'}]}",
"local.s");
@@ -815,9 +818,9 @@ void tst_Gdb::dump_misc()
{
prepare("dump_misc");
next();
- run("B","{iname='local.s',addr='-',name='s',type='int *',"
+ run("B","{iname='local.s',name='s',type='int *',"
"value='-',numchild='1'}", "", 0);
- run("B","{iname='local.s',addr='-',name='s',type='int *',"
+ run("B","{iname='local.s',name='s',type='int *',"
"value='-',numchild='1',children=[{iname='local.s.*',"
"name='*s',type='int',value='1',numchild='0'}]}", "local.s", 0);
}
@@ -1010,9 +1013,9 @@ void tst_Gdb::dump_QAbstractItemAndModelIndex()
void tst_Gdb::dump_QAbstractItemModelHelper(QAbstractItemModel &m)
{
QByteArray address = ptrToBa(&m);
- QByteArray expected = QByteArray("tiname='iname',addr='%',"
+ QByteArray expected = QByteArray("tiname='iname',"
"type='"NS"QAbstractItemModel',value='(%,%)',numchild='1',children=["
- "{numchild='1',name='"NS"QObject',addr='%',value='%',"
+ "{numchild='1',name='"NS"QObject',value='%',"
"valueencoded='2',type='"NS"QObject',displayedtype='%'}")
<< address
<< N(m.rowCount())
@@ -1025,7 +1028,7 @@ void tst_Gdb::dump_QAbstractItemModelHelper(QAbstractItemModel &m)
for (int column = 0; column < m.columnCount(); ++column) {
QModelIndex mi = m.index(row, column);
expected.append(QByteArray(",{name='[%,%]',value='%',"
- "valueencoded='2',numchild='1',addr='$%,%,%,%',"
+ "valueencoded='2',numchild='1',%,%,%',"
"type='"NS"QAbstractItem'}")
<< N(row)
<< N(column)
@@ -1089,27 +1092,27 @@ void tst_Gdb::dump_QByteArray()
{
prepare("dump_QByteArray");
if (checkUninitialized)
- run("A","{iname='local.ba',addr='-',name='ba',type='"NS"QByteArray',"
+ run("A","{iname='local.ba',name='ba',type='"NS"QByteArray',"
"value='<not in scope>',numchild='0'}");
next();
- run("B","{iname='local.ba',addr='-',name='ba',type='"NS"QByteArray',"
+ run("B","{iname='local.ba',name='ba',type='"NS"QByteArray',"
"valueencoded='6',value='',numchild='0'}");
next();
- run("C","{iname='local.ba',addr='-',name='ba',type='"NS"QByteArray',"
+ run("C","{iname='local.ba',name='ba',type='"NS"QByteArray',"
"valueencoded='6',value='61',numchild='1'}");
next();
- run("D","{iname='local.ba',addr='-',name='ba',type='"NS"QByteArray',"
+ run("D","{iname='local.ba',name='ba',type='"NS"QByteArray',"
"valueencoded='6',value='6162',numchild='2'}");
next();
- run("E","{iname='local.ba',addr='-',name='ba',type='"NS"QByteArray',"
+ run("E","{iname='local.ba',name='ba',type='"NS"QByteArray',"
"valueencoded='6',value='616161616161616161616161616161616161"
"616161616161616161616161616161616161616161616161616161616161"
"616161616161616161616161616161616161616161616161616161616161"
"6161616161616161616161616161616161616161616161',numchild='101'}");
next();
- run("F","{iname='local.ba',addr='-',name='ba',type='"NS"QByteArray',"
+ run("F","{iname='local.ba',name='ba',type='"NS"QByteArray',"
"valueencoded='6',value='616263070a0d1b27223f',numchild='10'}");
- run("F","{iname='local.ba',addr='-',name='ba',type='"NS"QByteArray',"
+ run("F","{iname='local.ba',name='ba',type='"NS"QByteArray',"
"valueencoded='6',value='616263070a0d1b27223f',numchild='10',"
"childtype='char',childnumchild='0',"
"children=[{value='97 'a''},{value='98 'b''},"
@@ -1135,27 +1138,27 @@ void tst_Gdb::dump_QChar()
next();
// Case 1: Printable ASCII character.
- run("B","{iname='local.c',addr='-',name='c',type='"NS"QChar',"
+ run("B","{iname='local.c',name='c',type='"NS"QChar',"
"value=''X', ucs=88',numchild='0'}");
next();
// Case 2: Printable non-ASCII character.
- run("C","{iname='local.c',addr='-',name='c',type='"NS"QChar',"
+ run("C","{iname='local.c',name='c',type='"NS"QChar',"
"value=''?', ucs=1536',numchild='0'}");
next();
// Case 3: Non-printable ASCII character.
- run("D","{iname='local.c',addr='-',name='c',type='"NS"QChar',"
+ run("D","{iname='local.c',name='c',type='"NS"QChar',"
"value=''?', ucs=7',numchild='0'}");
next();
// Case 4: Non-printable non-ASCII character.
- run("E","{iname='local.c',addr='-',name='c',type='"NS"QChar',"
+ run("E","{iname='local.c',name='c',type='"NS"QChar',"
"value=''?', ucs=159',numchild='0'}");
next();
// Case 5: Printable ASCII Character that looks like the replacement character.
- run("F","{iname='local.c',addr='-',name='c',type='"NS"QChar',"
+ run("F","{iname='local.c',name='c',type='"NS"QChar',"
"value=''?', ucs=63',numchild='0'}");
}
@@ -2242,28 +2245,28 @@ void tst_Gdb::dump_std_list()
{
prepare("dump_std_list");
if (checkUninitialized)
- run("A","{iname='local.list',addr='-',name='list',"
+ run("A","{iname='local.list',name='list',"
"numchild='0'}");
next();
- run("B", "{iname='local.list',addr='-',name='list',"
+ run("B", "{iname='local.list',name='list',"
"type='std::list<int, std::allocator<int> >',"
"value='<0 items>',numchild='0',children=[]}",
"local.list");
next();
- run("C", "{iname='local.list',addr='-',name='list',"
+ run("C", "{iname='local.list',name='list',"
"type='std::list<int, std::allocator<int> >',"
"value='<1 items>',numchild='1',"
"childtype='int',childnumchild='0',children=[{value='45'}]}",
"local.list");
next();
- run("D", "{iname='local.list',addr='-',name='list',"
+ run("D", "{iname='local.list',name='list',"
"type='std::list<int, std::allocator<int> >',"
"value='<2 items>',numchild='2',"
"childtype='int',childnumchild='0',children=["
"{value='45'},{value='46'}]}",
"local.list");
next();
- run("E", "{iname='local.list',addr='-',name='list',"
+ run("E", "{iname='local.list',name='list',"
"type='std::list<int, std::allocator<int> >',"
"value='<3 items>',numchild='3',"
"childtype='int',childnumchild='0',children=["
@@ -2272,6 +2275,58 @@ void tst_Gdb::dump_std_list()
}
+///////////////////////////// std::string //////////////////////////////////
+
+void dump_std_string()
+{
+ /* A */ std::string str;
+ /* B */ str = "Hallo";
+ /* C */ (void) 0;
+}
+
+void tst_Gdb::dump_std_string()
+{
+ prepare("dump_std_string");
+ if (checkUninitialized)
+ run("A","{iname='local.str',name='str',"
+ "numchild='0'}");
+ next();
+ run("B","{iname='local.str',name='str',type='std::string',"
+ "valueencoded='6',value='',numchild='0'}");
+ next();
+ run("C","{iname='local.str',name='str',type='std::string',"
+ "valueencoded='6',value='48616c6c6f',numchild='0'}");
+}
+
+
+///////////////////////////// std::wstring //////////////////////////////////
+
+void dump_std_wstring()
+{
+ /* A */ std::wstring str;
+ /* B */ str = L"Hallo";
+ /* C */ (void) 0;
+}
+
+void tst_Gdb::dump_std_wstring()
+{
+ prepare("dump_std_wstring");
+ if (checkUninitialized)
+ run("A","{iname='local.str',name='str',"
+ "numchild='0'}");
+ next();
+ run("B","{iname='local.str',name='str',type='std::string',valueencoded='6',"
+ "value='',numchild='0'}");
+ next();
+ if (sizeof(wchar_t) == 2)
+ run("C","{iname='local.str',name='str',type='std::string',valueencoded='6',"
+ "value='00480061006c006c006f',numchild='0'}");
+ else
+ run("C","{iname='local.str',name='str',type='std::string',valueencoded='6',"
+ "value='00000048000000610000006c0000006c0000006f',numchild='0'}");
+}
+
+
///////////////////////////// std::vector<int> //////////////////////////////
void dump_std_vector()
@@ -2291,19 +2346,19 @@ void tst_Gdb::dump_std_vector()
prepare("dump_std_vector");
if (checkUninitialized)
- run("A","{iname='local.vector',addr='-',name='vector',"
+ run("A","{iname='local.vector',name='vector',"
"numchild='0'}");
next(2);
- run("B","{iname='local.vector',addr='-',name='vector',type='"VECTOR"',"
+ run("B","{iname='local.vector',name='vector',type='"VECTOR"',"
"value='<0 items>',numchild='0'},"
- "{iname='local.list',addr='-',name='list',type='"LIST"',"
+ "{iname='local.list',name='list',type='"LIST"',"
"value='<0 items>',numchild='0'}");
next(3);
- run("E","{iname='local.vector',addr='-',name='vector',type='"VECTOR"',"
+ run("E","{iname='local.vector',name='vector',type='"VECTOR"',"
"value='<2 items>',numchild='2',childtype='"LIST" *',"
"childnumchild='1',children=[{type='"LIST"',value='<2 items>',"
"numchild='2'},{value='<null>',numchild='0'}]},"
- "{iname='local.list',addr='-',name='list',type='"LIST"',"
+ "{iname='local.list',name='list',type='"LIST"',"
"value='<0 items>',numchild='0'}",
"local.vector,local.vector.0");
}
@@ -2354,13 +2409,13 @@ void tst_Gdb::dump_QHash_int_int()
prepare("dump_QHash_int_int");
if (checkUninitialized)
- run("A","{iname='local.h',addr='-',name='h',"
+ run("A","{iname='local.h',name='h',"
"type='"NS"QHash<int, int>',value='<not in scope>',"
"numchild='0'}");
next();
next();
next();
- run("D","{iname='local.h',addr='-',name='h',"
+ run("D","{iname='local.h',name='h',"
"type='"NS"QHash<int, int>',value='<2 items>',numchild='2',"
"childtype='int',childnumchild='0',children=["
"{name='43',value='44'},"
@@ -2382,30 +2437,30 @@ void tst_Gdb::dump_QHash_QString_QString()
{
prepare("dump_QHash_QString_QString");
if (checkUninitialized)
- run("A","{iname='local.h',addr='-',name='h',"
+ run("A","{iname='local.h',name='h',"
"type='"NS"QHash<"NS"QString, "NS"QString>',value='<not in scope>',"
"numchild='0'}");
next();
- //run("B","{iname='local.h',addr='-',name='h',"
- // "type='"NS"QHash<"NS"QString, "NS"QString>',value='<0 items>',"
- // "numchild='0'}");
+ run("B","{iname='local.h',name='h',"
+ "type='"NS"QHash<"NS"QString, "NS"QString>',value='<0 items>',"
+ "numchild='0'}");
next();
next();
- //run("D","{iname='local.h',addr='-',name='h',"
- // "type='"NS"QHash<"NS"QString, "NS"QString>',value='<2 items>',"
- // "numchild='2'}");
- run("D","{iname='local.h',addr='-',name='h',"
+ run("D","{iname='local.h',name='h',"
+ "type='"NS"QHash<"NS"QString, "NS"QString>',value='<2 items>',"
+ "numchild='2'}");
+ run("D","{iname='local.h',name='h',"
"type='"NS"QHash<"NS"QString, "NS"QString>',value='<2 items>',"
"numchild='2',childtype='"NS"QHashNode<"NS"QString, "NS"QString>',"
"children=["
- "{value=' ',numchild='2',children=[{name='key',valueencoded='7',"
- "value='66006f006f00',numchild='0'},"
- "{name='value',valueencoded='7',"
- "value='620061007200',numchild='0'}]},"
- "{value=' ',numchild='2',children=[{name='key',valueencoded='7',"
- "value='680065006c006c006f00',numchild='0'},"
- "{name='value',valueencoded='7',"
- "value='77006f0072006c006400',numchild='0'}]}"
+ "{value=' ',numchild='2',children=[{name='key',type='"NS"QString',"
+ "valueencoded='7',value='66006f006f00',numchild='0'},"
+ "{name='value',type='"NS"QString',"
+ "valueencoded='7',value='620061007200',numchild='0'}]},"
+ "{value=' ',numchild='2',children=[{name='key',type='"NS"QString',"
+ "valueencoded='7',value='680065006c006c006f00',numchild='0'},"
+ "{name='value',type='"NS"QString',valueencoded='7',"
+ "value='77006f0072006c006400',numchild='0'}]}"
"]}",
"local.h,local.h.0,local.h.1");
}
@@ -2425,22 +2480,22 @@ void tst_Gdb::dump_QList_int()
{
prepare("dump_QList_int");
if (checkUninitialized)
- run("A","{iname='local.list',addr='-',name='list',"
+ run("A","{iname='local.list',name='list',"
"type='"NS"QList<int>',value='<not in scope>',numchild='0'}");
next();
- run("B","{iname='local.list',addr='-',name='list',"
+ run("B","{iname='local.list',name='list',"
"type='"NS"QList<int>',value='<0 items>',numchild='0'}");
next();
- run("C","{iname='local.list',addr='-',name='list',"
+ run("C","{iname='local.list',name='list',"
"type='"NS"QList<int>',value='<1 items>',numchild='1'}");
- run("C","{iname='local.list',addr='-',name='list',"
+ run("C","{iname='local.list',name='list',"
"type='"NS"QList<int>',value='<1 items>',numchild='1',"
"childtype='int',childnumchild='0',children=["
"{value='1'}]}", "local.list");
next();
- run("D","{iname='local.list',addr='-',name='list',"
+ run("D","{iname='local.list',name='list',"
"type='"NS"QList<int>',value='<2 items>',numchild='2'}");
- run("D","{iname='local.list',addr='-',name='list',"
+ run("D","{iname='local.list',name='list',"
"type='"NS"QList<int>',value='<2 items>',numchild='2',"
"childtype='int',childnumchild='0',children=["
"{value='1'},{value='2'}]}", "local.list");
@@ -2462,13 +2517,13 @@ void tst_Gdb::dump_QList_int_star()
{
prepare("dump_QList_int_star");
if (checkUninitialized)
- run("A","{iname='local.list',addr='-',name='list',"
+ run("A","{iname='local.list',name='list',"
"type='"NS"QList<int*>',value='<not in scope>',numchild='0'}");
next();
next();
next();
next();
- run("E","{iname='local.list',addr='-',name='list',"
+ run("E","{iname='local.list',name='list',"
"type='"NS"QList<int*>',value='<3 items>',numchild='3',"
"childtype='int',childnumchild='0',children=["
"{value='1'},{value='<null>',type='int *'},{value='2'}]}", "local.list");
@@ -2488,15 +2543,15 @@ void tst_Gdb::dump_QList_char()
{
prepare("dump_QList_char");
if (checkUninitialized)
- run("A","{iname='local.list',addr='-',name='list',"
+ run("A","{iname='local.list',name='list',"
"type='"NS"QList<char>',value='<not in scope>',numchild='0'}");
next();
- run("B","{iname='local.list',addr='-',name='list',"
+ run("B","{iname='local.list',name='list',"
"type='"NS"QList<char>',value='<0 items>',numchild='0'}");
next();
- run("C","{iname='local.list',addr='-',name='list',"
+ run("C","{iname='local.list',name='list',"
"type='"NS"QList<char>',value='<1 items>',numchild='1'}");
- run("C","{iname='local.list',addr='-',name='list',"
+ run("C","{iname='local.list',name='list',"
"type='"NS"QList<char>',value='<1 items>',numchild='1',"
"childtype='char',childnumchild='0',children=["
"{value='97 'a''}]}", "local.list");
@@ -2518,21 +2573,21 @@ void tst_Gdb::dump_QList_char_star()
{
prepare("dump_QList_char_star");
if (checkUninitialized)
- run("A","{iname='local.list',addr='-',name='list',"
+ run("A","{iname='local.list',name='list',"
"type='"NS"QList<char const*>',value='<not in scope>',numchild='0'}");
next();
- run("B","{iname='local.list',addr='-',name='list',"
+ run("B","{iname='local.list',name='list',"
"type='"NS"QList<char const*>',value='<0 items>',numchild='0'}");
next();
- run("C","{iname='local.list',addr='-',name='list',"
+ run("C","{iname='local.list',name='list',"
"type='"NS"QList<char const*>',value='<1 items>',numchild='1'}");
- run("C","{iname='local.list',addr='-',name='list',"
+ run("C","{iname='local.list',name='list',"
"type='"NS"QList<char const*>',value='<1 items>',numchild='1',"
"childtype='const char *',childnumchild='1',children=["
"{valueencoded='6',value='61',numchild='0'}]}", "local.list");
next();
next();
- run("E","{iname='local.list',addr='-',name='list',"
+ run("E","{iname='local.list',name='list',"
"type='"NS"QList<char const*>',value='<3 items>',numchild='3',"
"childtype='const char *',childnumchild='1',children=["
"{valueencoded='6',value='61',numchild='0'},"
@@ -2554,15 +2609,15 @@ void tst_Gdb::dump_QList_QString()
{
prepare("dump_QList_QString");
if (0 && checkUninitialized)
- run("A","{iname='local.list',addr='-',name='list',"
+ run("A","{iname='local.list',name='list',"
"type='"NS"QList<"NS"QString>',value='<not in scope>',numchild='0'}");
next();
- run("B","{iname='local.list',addr='-',name='list',"
+ run("B","{iname='local.list',name='list',"
"type='"NS"QList<"NS"QString>',value='<0 items>',numchild='0'}");
next();
- run("C","{iname='local.list',addr='-',name='list',"
+ run("C","{iname='local.list',name='list',"
"type='"NS"QList<"NS"QString>',value='<1 items>',numchild='1'}");
- run("C","{iname='local.list',addr='-',name='list',"
+ run("C","{iname='local.list',name='list',"
"type='"NS"QList<"NS"QString>',value='<1 items>',numchild='1',"
"childtype='"NS"QString',childnumchild='0',children=["
"{valueencoded='7',value='480061006c006c006f00'}]}", "local.list");
@@ -2582,19 +2637,19 @@ void tst_Gdb::dump_QList_QString3()
{
prepare("dump_QList_QString3");
if (checkUninitialized)
- run("A","{iname='local.list',addr='-',name='list',"
+ run("A","{iname='local.list',name='list',"
"type='"NS"QList<QString3>',value='<not in scope>',numchild='0'}");
next();
- run("B","{iname='local.list',addr='-',name='list',"
+ run("B","{iname='local.list',name='list',"
"type='"NS"QList<QString3>',value='<0 items>',numchild='0'}");
next();
- run("C","{iname='local.list',addr='-',name='list',"
+ run("C","{iname='local.list',name='list',"
"type='"NS"QList<QString3>',value='<1 items>',numchild='1'}");
- run("C","{iname='local.list',addr='-',name='list',"
+ run("C","{iname='local.list',name='list',"
"type='"NS"QList<QString3>',value='<1 items>',numchild='1',"
"childtype='QString3',children=["
"{value='{...}',numchild='3'}]}", "local.list");
- run("C","{iname='local.list',addr='-',name='list',"
+ run("C","{iname='local.list',name='list',"
"type='"NS"QList<QString3>',value='<1 items>',numchild='1',"
"childtype='QString3',children=[{value='{...}',numchild='3',children=["
"{iname='local.list.0.s1',name='s1',type='"NS"QString',"
@@ -2620,19 +2675,19 @@ void tst_Gdb::dump_QList_Int3()
{
prepare("dump_QList_Int3");
if (checkUninitialized)
- run("A","{iname='local.list',addr='-',name='list',"
+ run("A","{iname='local.list',name='list',"
"type='"NS"QList<Int3>',value='<not in scope>',numchild='0'}");
next();
- run("B","{iname='local.list',addr='-',name='list',"
+ run("B","{iname='local.list',name='list',"
"type='"NS"QList<Int3>',value='<0 items>',numchild='0'}");
next();
- run("C","{iname='local.list',addr='-',name='list',"
+ run("C","{iname='local.list',name='list',"
"type='"NS"QList<Int3>',value='<1 items>',numchild='1'}");
- run("C","{iname='local.list',addr='-',name='list',"
+ run("C","{iname='local.list',name='list',"
"type='"NS"QList<Int3>',value='<1 items>',numchild='1',"
"childtype='Int3',children=[{value='{...}',numchild='3'}]}",
"local.list");
- run("C","{iname='local.list',addr='-',name='list',"
+ run("C","{iname='local.list',name='list',"
"type='"NS"QList<Int3>',value='<1 items>',numchild='1',"
"childtype='Int3',children=[{value='{...}',numchild='3',children=["
"{iname='local.list.0.i1',name='i1',type='int',value='42',numchild='0'},"
@@ -2642,6 +2697,49 @@ void tst_Gdb::dump_QList_Int3()
}
+///////////////////////////// QMap<QString, QString> //////////////////////////////
+
+void dump_QMap_QString_QString()
+{
+ /* A */ QMap<QString, QString> h;
+ /* B */ h["hello"] = "world";
+ /* C */ h["foo"] = "bar";
+ /* D */ (void) 0;
+}
+
+void tst_Gdb::dump_QMap_QString_QString()
+{
+ prepare("dump_QMap_QString_QString");
+ if (checkUninitialized)
+ run("A","{iname='local.h',name='h',"
+ "type='"NS"QMap<"NS"QString, "NS"QString>',value='<not in scope>',"
+ "numchild='0'}");
+ next();
+ run("B","{iname='local.h',name='h',"
+ "type='"NS"QMap<"NS"QString, "NS"QString>',value='<0 items>',"
+ "numchild='0'}");
+ next();
+ next();
+ run("D","{iname='local.h',name='h',"
+ "type='"NS"QMap<"NS"QString, "NS"QString>',value='<2 items>',"
+ "numchild='2'}");
+ run("D","{iname='local.h',name='h',"
+ "type='"NS"QMap<"NS"QString, "NS"QString>',value='<2 items>',"
+ "numchild='2',childtype='"NS"QMapNode<"NS"QString, "NS"QString>',"
+ "children=["
+ "{value=' ',numchild='2',children=[{name='key',type='"NS"QString',"
+ "valueencoded='7',value='66006f006f00',numchild='0'},"
+ "{name='value',type='"NS"QString',"
+ "valueencoded='7',value='620061007200',numchild='0'}]},"
+ "{value=' ',numchild='2',children=[{name='key',type='"NS"QString',"
+ "valueencoded='7',value='680065006c006c006f00',numchild='0'},"
+ "{name='value',type='"NS"QString',valueencoded='7',"
+ "value='77006f0072006c006400',numchild='0'}]}"
+ "]}",
+ "local.h,local.h.0,local.h.1");
+}
+
+
///////////////////////////// QPoint /////////////////////////////////
void dump_QPoint()
@@ -2655,10 +2753,10 @@ void tst_Gdb::dump_QPoint()
prepare("dump_QPoint");
next();
next();
- run("C","{iname='local.p',addr='-',name='p',type='"NS"QPoint',"
+ run("C","{iname='local.p',name='p',type='"NS"QPoint',"
"value='(43, 44)',numchild='2',childtype='int',childnumchild='0',"
"children=[{name='x',value='43'},{name='y',value='44'}]},"
- "{iname='local.f',addr='-',name='f',type='"NS"QPointF',"
+ "{iname='local.f',name='f',type='"NS"QPointF',"
"value='(45, 46)',numchild='2',childtype='double',childnumchild='0',"
"children=[{name='x',value='45'},{name='y',value='46'}]}",
"local.p,local.f");
@@ -2679,11 +2777,11 @@ void tst_Gdb::dump_QRect()
next();
next();
- run("C","{iname='local.p',addr='-',name='p',type='"NS"QRect',"
+ run("C","{iname='local.p',name='p',type='"NS"QRect',"
"value='100x200+43+44',numchild='4',childtype='int',childnumchild='0',"
"children=[{name='x1',value='43'},{name='y1',value='44'},"
"{name='x2',value='142'},{name='y2',value='243'}]},"
- "{iname='local.f',addr='-',name='f',type='"NS"QRectF',"
+ "{iname='local.f',name='f',type='"NS"QRectF',"
"value='100x200+45+46',numchild='4',childtype='double',childnumchild='0',"
"children=[{name='x',value='45'},{name='y',value='46'},"
"{name='w',value='100'},{name='h',value='200'}]}",
@@ -2724,65 +2822,65 @@ void tst_Gdb::dump_QSharedPointer()
#if QT_VERSION >= 0x040500
prepare("dump_QSharedPointer");
if (checkUninitialized)
- run("A","{iname='local.simplePtr',addr='-',name='simplePtr',"
+ run("A","{iname='local.simplePtr',name='simplePtr',"
"'type='"NS"QSharedPointer<int>',value='<not in scope>',numchild='0'},"
- "{iname='local.simplePtr2',addr='-',name='simplePtr2',"
+ "{iname='local.simplePtr2',name='simplePtr2',"
"'type='"NS"QSharedPointer<int>',value='<not in scope>',numchild='0'},"
- "{iname='local.simplePtr3',addr='-',name='simplePtr3',"
+ "{iname='local.simplePtr3',name='simplePtr3',"
"'type='"NS"QSharedPointer<int>',value='<not in scope>',numchild='0'},"
- "{iname='local.simplePtr4',addr='-',name='simplePtr3',"
+ "{iname='local.simplePtr4',name='simplePtr3',"
"'type='"NS"QWeakPointer<int>',value='<not in scope>',numchild='0'},"
- "{iname='local.compositePtr',addr='-',name='compositePtr',"
+ "{iname='local.compositePtr',name='compositePtr',"
"'type='"NS"QSharedPointer<int>',value='<not in scope>',numchild='0'},"
- "{iname='local.compositePtr2',addr='-',name='compositePtr2',"
+ "{iname='local.compositePtr2',name='compositePtr2',"
"'type='"NS"QSharedPointer<int>'value='<not in scope>',numchild='0'},"
- "{iname='local.compositePtr3',addr='-',name='compositePtr3',"
+ "{iname='local.compositePtr3',name='compositePtr3',"
"'type='"NS"QSharedPointer<int>',value='<not in scope>',numchild='0'},"
- "{iname='local.compositePtr4',addr='-',name='compositePtr4',"
+ "{iname='local.compositePtr4',name='compositePtr4',"
"'type='"NS"QWeakPointer<int>',value='<not in scope>',numchild='0'}");
next(8);
- run("C","{iname='local.simplePtr',addr='-',name='simplePtr',"
+ run("C","{iname='local.simplePtr',name='simplePtr',"
"type='"NS"QSharedPointer<int>',value='<null>',numchild='0'},"
- "{iname='local.simplePtr2',addr='-',name='simplePtr2',"
+ "{iname='local.simplePtr2',name='simplePtr2',"
"type='"NS"QSharedPointer<int>',value='',numchild='3'},"
- "{iname='local.simplePtr3',addr='-',name='simplePtr3',"
+ "{iname='local.simplePtr3',name='simplePtr3',"
"type='"NS"QSharedPointer<int>',value='',numchild='3'},"
- "{iname='local.simplePtr4',addr='-',name='simplePtr4',"
+ "{iname='local.simplePtr4',name='simplePtr4',"
"type='"NS"QWeakPointer<int>',value='',numchild='3'},"
- "{iname='local.compositePtr',addr='-',name='compositePtr',"
+ "{iname='local.compositePtr',name='compositePtr',"
"type='"NS"QSharedPointer<"NS"QString>',value='<null>',numchild='0'},"
- "{iname='local.compositePtr2',addr='-',name='compositePtr2',"
+ "{iname='local.compositePtr2',name='compositePtr2',"
"type='"NS"QSharedPointer<"NS"QString>',value='',numchild='3'},"
- "{iname='local.compositePtr3',addr='-',name='compositePtr3',"
+ "{iname='local.compositePtr3',name='compositePtr3',"
"type='"NS"QSharedPointer<"NS"QString>',value='',numchild='3'},"
- "{iname='local.compositePtr4',addr='-',name='compositePtr4',"
+ "{iname='local.compositePtr4',name='compositePtr4',"
"type='"NS"QWeakPointer<"NS"QString>',value='',numchild='3'}");
- run("C","{iname='local.simplePtr',addr='-',name='simplePtr',"
+ run("C","{iname='local.simplePtr',name='simplePtr',"
"type='"NS"QSharedPointer<int>',value='<null>',numchild='0'},"
- "{iname='local.simplePtr2',addr='-',name='simplePtr2',"
+ "{iname='local.simplePtr2',name='simplePtr2',"
"type='"NS"QSharedPointer<int>',value='',numchild='3',children=["
"{name='data',type='int',value='99',numchild='0'},"
"{name='weakref',value='3',type='int',numchild='0'},"
"{name='strongref',value='2',type='int',numchild='0'}]},"
- "{iname='local.simplePtr3',addr='-',name='simplePtr3',"
+ "{iname='local.simplePtr3',name='simplePtr3',"
"type='"NS"QSharedPointer<int>',value='',numchild='3',children=["
"{name='data',type='int',value='99',numchild='0'},"
"{name='weakref',value='3',type='int',numchild='0'},"
"{name='strongref',value='2',type='int',numchild='0'}]},"
- "{iname='local.simplePtr4',addr='-',name='simplePtr4',"
+ "{iname='local.simplePtr4',name='simplePtr4',"
"type='"NS"QWeakPointer<int>',value='',numchild='3',children=["
"{name='data',type='int',value='99',numchild='0'},"
"{name='weakref',value='3',type='int',numchild='0'},"
"{name='strongref',value='2',type='int',numchild='0'}]},"
- "{iname='local.compositePtr',addr='-',name='compositePtr',"
+ "{iname='local.compositePtr',name='compositePtr',"
"type='"NS"QSharedPointer<"NS"QString>',value='<null>',numchild='0'},"
- "{iname='local.compositePtr2',addr='-',name='compositePtr2',"
+ "{iname='local.compositePtr2',name='compositePtr2',"
"type='"NS"QSharedPointer<"NS"QString>',value='',numchild='3'},"
- "{iname='local.compositePtr3',addr='-',name='compositePtr3',"
+ "{iname='local.compositePtr3',name='compositePtr3',"
"type='"NS"QSharedPointer<"NS"QString>',value='',numchild='3'},"
- "{iname='local.compositePtr4',addr='-',name='compositePtr4',"
+ "{iname='local.compositePtr4',name='compositePtr4',"
"type='"NS"QWeakPointer<"NS"QString>',value='',numchild='3'}",
"local.simplePtr,local.simplePtr2,local.simplePtr3,local.simplePtr4,"
"local.compositePtr,local.compositePtr,local.compositePtr,"
@@ -2804,10 +2902,10 @@ void tst_Gdb::dump_QSize()
{
prepare("dump_QSize");
next(2);
- run("C","{iname='local.p',addr='-',name='p',type='"NS"QSize',"
+ run("C","{iname='local.p',name='p',type='"NS"QSize',"
"value='(43, 44)',numchild='2',childtype='int',childnumchild='0',"
"children=[{name='w',value='43'},{name='h',value='44'}]},"
- "{iname='local.f',addr='-',name='f',type='"NS"QSizeF',"
+ "{iname='local.f',name='f',type='"NS"QSizeF',"
"value='(45, 46)',numchild='2',childtype='double',childnumchild='0',"
"children=[{name='w',value='45'},{name='h',value='46'}]}",
"local.p,local.f");
@@ -2828,24 +2926,24 @@ void tst_Gdb::dump_QStack()
{
prepare("dump_QStack");
if (checkUninitialized)
- run("A","{iname='local.v',addr='-',name='v',type='"NS"QStack<int>',"
+ run("A","{iname='local.v',name='v',type='"NS"QStack<int>',"
"value='<not in scope>',numchild='0'}");
next();
- run("B","{iname='local.v',addr='-',name='v',type='"NS"QStack<int>',"
+ run("B","{iname='local.v',name='v',type='"NS"QStack<int>',"
"value='<0 items>',numchild='0'}");
- run("B","{iname='local.v',addr='-',name='v',type='"NS"QStack<int>',"
+ run("B","{iname='local.v',name='v',type='"NS"QStack<int>',"
"value='<0 items>',numchild='0',children=[]}", "local.v");
next();
- run("C","{iname='local.v',addr='-',name='v',type='"NS"QStack<int>',"
+ run("C","{iname='local.v',name='v',type='"NS"QStack<int>',"
"value='<1 items>',numchild='1'}");
- run("C","{iname='local.v',addr='-',name='v',type='"NS"QStack<int>',"
+ run("C","{iname='local.v',name='v',type='"NS"QStack<int>',"
"value='<1 items>',numchild='1',childtype='int',"
"childnumchild='0',children=[{value='3'}]}", // rounding...
"local.v");
next();
- run("D","{iname='local.v',addr='-',name='v',type='"NS"QStack<int>',"
+ run("D","{iname='local.v',name='v',type='"NS"QStack<int>',"
"value='<2 items>',numchild='2'}");
- run("D","{iname='local.v',addr='-',name='v',type='"NS"QStack<int>',"
+ run("D","{iname='local.v',name='v',type='"NS"QStack<int>',"
"value='<2 items>',numchild='2',childtype='int',"
"childnumchild='0',children=[{value='3'},{value='2'}]}",
"local.v");
@@ -2866,19 +2964,19 @@ void tst_Gdb::dump_QString()
{
prepare("dump_QString");
if (checkUninitialized)
- run("A","{iname='local.s',addr='-',name='s',type='"NS"QString',"
+ run("A","{iname='local.s',name='s',type='"NS"QString',"
"value='<not in scope>',numchild='0'}");
next();
- run("B","{iname='local.s',addr='-',name='s',type='"NS"QString',"
+ run("B","{iname='local.s',name='s',type='"NS"QString',"
"valueencoded='7',value='',numchild='0'}", "local.s");
// Plain C style dumping:
- run("B","{iname='local.s',addr='-',name='s',type='"NS"QString',"
+ run("B","{iname='local.s',name='s',type='"NS"QString',"
"value='{...}',numchild='5'}", "", 0);
- run("B","{iname='local.s',addr='-',name='s',type='"NS"QString',"
+ run("B","{iname='local.s',name='s',type='"NS"QString',"
"value='{...}',numchild='5',children=["
"{iname='local.s.d',name='d',type='"NS"QString::Data *',"
"value='-',numchild='1'}]}", "local.s", 0);
- run("B","{iname='local.s',addr='-',name='s',type='"NS"QString',"
+ run("B","{iname='local.s',name='s',type='"NS"QString',"
"value='{...}',numchild='5',"
"children=[{iname='local.s.d',name='d',"
"type='"NS"QString::Data *',value='-',numchild='1',"
@@ -2886,10 +2984,10 @@ void tst_Gdb::dump_QString()
"type='"NS"QString::Data',value='{...}',numchild='11'}]}]}",
"local.s,local.s.d", 0);
next();
- run("C","{iname='local.s',addr='-',name='s',type='"NS"QString',"
+ run("C","{iname='local.s',name='s',type='"NS"QString',"
"valueencoded='7',value='680061006c006c006f00',numchild='0'}");
next();
- run("D","{iname='local.s',addr='-',name='s',type='"NS"QString',"
+ run("D","{iname='local.s',name='s',type='"NS"QString',"
"valueencoded='7',value='680061006c006c006f007800',numchild='0'}");
}
@@ -2908,25 +3006,25 @@ void tst_Gdb::dump_QStringList()
{
prepare("dump_QStringList");
if (checkUninitialized)
- run("A","{iname='local.s',addr='-',name='s',type='"NS"QStringList',"
+ run("A","{iname='local.s',name='s',type='"NS"QStringList',"
"value='<not in scope>',numchild='0'}");
next();
- run("B","{iname='local.s',addr='-',name='s',type='"NS"QStringList',"
+ run("B","{iname='local.s',name='s',type='"NS"QStringList',"
"value='<0 items>',numchild='0'}");
- run("B","{iname='local.s',addr='-',name='s',type='"NS"QStringList',"
+ run("B","{iname='local.s',name='s',type='"NS"QStringList',"
"value='<0 items>',numchild='0',children=[]}", "local.s");
next();
- run("C","{iname='local.s',addr='-',name='s',type='"NS"QStringList',"
+ run("C","{iname='local.s',name='s',type='"NS"QStringList',"
"value='<1 items>',numchild='1'}");
- run("C","{iname='local.s',addr='-',name='s',type='"NS"QStringList',"
+ run("C","{iname='local.s',name='s',type='"NS"QStringList',"
"value='<1 items>',numchild='1',childtype='"NS"QString',"
"childnumchild='0',children=[{valueencoded='7',"
"value='680065006c006c006f00'}]}",
"local.s");
next();
- run("D","{iname='local.s',addr='-',name='s',type='"NS"QStringList',"
+ run("D","{iname='local.s',name='s',type='"NS"QStringList',"
"value='<2 items>',numchild='2'}");
- run("D","{iname='local.s',addr='-',name='s',type='"NS"QStringList',"
+ run("D","{iname='local.s',name='s',type='"NS"QStringList',"
"value='<2 items>',numchild='2',childtype='"NS"QString',"
"childnumchild='0',children=["
"{valueencoded='7',value='680065006c006c006f00'},"
@@ -2949,24 +3047,24 @@ void tst_Gdb::dump_QVector()
{
prepare("dump_QVector");
if (checkUninitialized)
- run("A","{iname='local.v',addr='-',name='v',type='"NS"QVector<double>',"
+ run("A","{iname='local.v',name='v',type='"NS"QVector<double>',"
"value='<not in scope>',numchild='0'}");
next();
- run("B","{iname='local.v',addr='-',name='v',type='"NS"QVector<double>',"
+ run("B","{iname='local.v',name='v',type='"NS"QVector<double>',"
"value='<0 items>',numchild='0'}");
- run("B","{iname='local.v',addr='-',name='v',type='"NS"QVector<double>',"
+ run("B","{iname='local.v',name='v',type='"NS"QVector<double>',"
"value='<0 items>',numchild='0',children=[]}", "local.v");
next();
- run("C","{iname='local.v',addr='-',name='v',type='"NS"QVector<double>',"
+ run("C","{iname='local.v',name='v',type='"NS"QVector<double>',"
"value='<1 items>',numchild='1'}");
- run("C","{iname='local.v',addr='-',name='v',type='"NS"QVector<double>',"
+ run("C","{iname='local.v',name='v',type='"NS"QVector<double>',"
"value='<1 items>',numchild='1',childtype='double',"
"childnumchild='0',children=[{value='-'}]}", // rounding...
"local.v");
next();
- run("D","{iname='local.v',addr='-',name='v',type='"NS"QVector<double>',"
+ run("D","{iname='local.v',name='v',type='"NS"QVector<double>',"
"value='<2 items>',numchild='2'}");
- run("D","{iname='local.v',addr='-',name='v',type='"NS"QVector<double>',"
+ run("D","{iname='local.v',name='v',type='"NS"QVector<double>',"
"value='<2 items>',numchild='2',childtype='double',"
"childnumchild='0',children=[{value='-'},{value='-'}]}",
"local.v");
@@ -3034,7 +3132,7 @@ void dump_QVariant()
void tst_Gdb::dump_QVariant()
{
- #define PRE "iname='local.v',addr='-',name='v',type='"NS"QVariant',"
+ #define PRE "iname='local.v',name='v',type='"NS"QVariant',"
prepare("dump_QVariant");
if (checkUninitialized) /*<not in scope>*/
run("A","{"PRE"'value=<not in scope>',numchild='0'}");
@@ -3220,13 +3318,13 @@ void tst_Gdb::dump_QWeakPointer_11()
// Case 1.1: Null pointer.
prepare("dump_QWeakPointer_11");
if (checkUninitialized)
- run("A","{iname='local.sp',addr='-',name='sp',"
+ run("A","{iname='local.sp',name='sp',"
"type='"NS"QSharedPointer<int>',value='<not in scope>',numchild='0'}");
next();
next();
- run("B","{iname='local.sp',addr='-',name='sp',"
+ run("B","{iname='local.sp',name='sp',"
"type='"NS"QSharedPointer<int>',value='<null>',numchild='0'},"
- "{iname='local.wp',addr='-',name='wp',"
+ "{iname='local.wp',name='wp',"
"type='"NS"QWeakPointer<int>',value='<null>',numchild='0'}");
}
@@ -3244,20 +3342,20 @@ void tst_Gdb::dump_QWeakPointer_12()
// Case 1.2: Weak pointer is unique.
prepare("dump_QWeakPointer_12");
if (checkUninitialized)
- run("A","{iname='local.sp',addr='-',name='sp',"
+ run("A","{iname='local.sp',name='sp',"
"type='"NS"QSharedPointer<int>',value='<not in scope>',numchild='0'}");
next();
next();
- run("B","{iname='local.sp',addr='-',name='sp',"
+ run("B","{iname='local.sp',name='sp',"
"type='"NS"QSharedPointer<int>',value='',numchild='3'},"
- "{iname='local.wp',addr='-',name='wp',"
+ "{iname='local.wp',name='wp',"
"type='"NS"QWeakPointer<int>',value='',numchild='3'}");
- run("B","{iname='local.sp',addr='-',name='sp',"
+ run("B","{iname='local.sp',name='sp',"
"type='"NS"QSharedPointer<int>',value='',numchild='3',children=["
"{name='data',type='int',value='99',numchild='0'},"
"{name='weakref',value='2',type='int',numchild='0'},"
"{name='strongref',value='2',type='int',numchild='0'}]},"
- "{iname='local.wp',addr='-',name='wp',"
+ "{iname='local.wp',name='wp',"
"type='"NS"QWeakPointer<int>',value='',numchild='3',children=["
"{name='data',type='int',value='99',numchild='0'},"
"{name='weakref',value='2',type='int',numchild='0'},"
@@ -3280,28 +3378,28 @@ void tst_Gdb::dump_QWeakPointer_13()
// Case 1.3: There are other weak pointers.
prepare("dump_QWeakPointer_13");
if (checkUninitialized)
- run("A","{iname='local.sp',addr='-',name='sp',"
+ run("A","{iname='local.sp',name='sp',"
"type='"NS"QSharedPointer<int>',value='<not in scope>',numchild='0'}");
next();
next();
next();
- run("B","{iname='local.sp',addr='-',name='sp',"
+ run("B","{iname='local.sp',name='sp',"
"type='"NS"QSharedPointer<int>',value='',numchild='3'},"
- "{iname='local.wp',addr='-',name='wp',"
+ "{iname='local.wp',name='wp',"
"type='"NS"QWeakPointer<int>',value='',numchild='3'},"
- "{iname='local.wp2',addr='-',name='wp2',"
+ "{iname='local.wp2',name='wp2',"
"type='"NS"QWeakPointer<int>',value='',numchild='3'}");
- run("B","{iname='local.sp',addr='-',name='sp',"
+ run("B","{iname='local.sp',name='sp',"
"type='"NS"QSharedPointer<int>',value='',numchild='3',children=["
"{name='data',type='int',value='99',numchild='0'},"
"{name='weakref',value='3',type='int',numchild='0'},"
"{name='strongref',value='3',type='int',numchild='0'}]},"
- "{iname='local.wp',addr='-',name='wp',"
+ "{iname='local.wp',name='wp',"
"type='"NS"QWeakPointer<int>',value='',numchild='3',children=["
"{name='data',type='int',value='99',numchild='0'},"
"{name='weakref',value='3',type='int',numchild='0'},"
"{name='strongref',value='3',type='int',numchild='0'}]},"
- "{iname='local.wp2',addr='-',name='wp2',"
+ "{iname='local.wp2',name='wp2',"
"type='"NS"QWeakPointer<int>',value='',numchild='3'}",
"local.sp,local.wp");
}
@@ -3320,17 +3418,17 @@ void tst_Gdb::dump_QWeakPointer_2()
// Case 2: Composite type.
prepare("dump_QWeakPointer_2");
if (checkUninitialized)
- run("A","{iname='local.sp',addr='-',name='sp',"
+ run("A","{iname='local.sp',name='sp',"
"type='"NS"QSharedPointer<"NS"QString>',value='<not in scope>',numchild='0'}");
next();
next();
- run("B","{iname='local.sp',addr='-',name='sp',"
+ run("B","{iname='local.sp',name='sp',"
"type='"NS"QSharedPointer<"NS"QString>',value='',numchild='3',children=["
"{name='data',type='"NS"QString',"
"valueencoded='7',value='5400650073007400',numchild='0'},"
"{name='weakref',value='2',type='int',numchild='0'},"
"{name='strongref',value='2',type='int',numchild='0'}]},"
- "{iname='local.wp',addr='-',name='wp',"
+ "{iname='local.wp',name='wp',"
"type='"NS"QWeakPointer<"NS"QString>',value='',numchild='3',children=["
"{name='data',type='"NS"QString',"
"valueencoded='7',value='5400650073007400',numchild='0'},"
@@ -3368,11 +3466,14 @@ int main(int argc, char *argv[])
dump_array_int();
dump_std_list();
dump_std_vector();
+ dump_std_string();
+ dump_std_wstring();
dump_Foo();
dump_misc();
dump_QByteArray();
dump_QChar();
dump_QHash_int_int();
+ dump_QHash_QString_QString();
dump_QList_char();
dump_QList_char_star();
dump_QList_int();
@@ -3380,6 +3481,7 @@ int main(int argc, char *argv[])
dump_QList_Int3();
dump_QList_QString();
dump_QList_QString3();
+ dump_QMap_QString_QString();
dump_QPoint();
dump_QRect();
dump_QSharedPointer();
diff --git a/tests/manual/gdbdebugger/simple/app.cpp b/tests/manual/gdbdebugger/simple/app.cpp
index a60566876b..a8a4feb454 100644
--- a/tests/manual/gdbdebugger/simple/app.cpp
+++ b/tests/manual/gdbdebugger/simple/app.cpp
@@ -157,6 +157,12 @@ public:
void testArray()
{
X xxx;
+ (void *) 0;
+ double d[3][3];
+ for (int i = 0; i != 3; ++i)
+ for (int j = 0; j != 3; ++j)
+ d[i][j] = i + j;
+
char c[20];
c[0] = 'a';
c[1] = 'b';