forked from qt-creator/qt-creator
Merge branch 'master' of git@scm.dev.nokia.troll.no:creator/mainline
This commit is contained in:
@@ -52,7 +52,13 @@
|
||||
|
||||
int qtGhVersion = QT_VERSION;
|
||||
|
||||
#ifndef USE_QT_GUI
|
||||
# ifdef QT_GUI_LIB
|
||||
# define USE_QT_GUI 1
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#if USE_QT_GUI
|
||||
# include <QtGui/QWidget>
|
||||
# include <QtGui/QPixmap>
|
||||
# include <QtGui/QImage>
|
||||
@@ -1296,9 +1302,9 @@ static void qDumpQHashNode(QDumper &d)
|
||||
d.disarm();
|
||||
}
|
||||
|
||||
#if USE_QT_GUI
|
||||
static void qDumpQImage(QDumper &d)
|
||||
{
|
||||
#ifdef QT_GUI_LIB
|
||||
const QImage &im = *reinterpret_cast<const QImage *>(d.data);
|
||||
P(d, "value", "(" << im.width() << "x" << im.height() << ")");
|
||||
P(d, "type", NS"QImage");
|
||||
@@ -1312,14 +1318,12 @@ static void qDumpQImage(QDumper &d)
|
||||
d.endHash();
|
||||
}
|
||||
d.disarm();
|
||||
#else
|
||||
Q_UNUSED(d);
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
|
||||
#if USE_QT_GUI
|
||||
static void qDumpQImageData(QDumper &d)
|
||||
{
|
||||
#ifdef QT_GUI_LIB
|
||||
const QImage &im = *reinterpret_cast<const QImage *>(d.data);
|
||||
const QByteArray ba(QByteArray::fromRawData((const char*)im.bits(), im.numBytes()));
|
||||
P(d, "type", NS"QImageData");
|
||||
@@ -1334,10 +1338,8 @@ static void qDumpQImageData(QDumper &d)
|
||||
P(d, "value", ba);
|
||||
#endif
|
||||
d.disarm();
|
||||
#else
|
||||
Q_UNUSED(d);
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
|
||||
static void qDumpQList(QDumper &d)
|
||||
{
|
||||
@@ -2020,18 +2022,16 @@ static void qDumpQObjectSlotList(QDumper &d)
|
||||
}
|
||||
|
||||
|
||||
#if USE_QT_GUI
|
||||
static void qDumpQPixmap(QDumper &d)
|
||||
{
|
||||
#ifdef QT_GUI_LIB
|
||||
const QPixmap &im = *reinterpret_cast<const QPixmap *>(d.data);
|
||||
P(d, "value", "(" << im.width() << "x" << im.height() << ")");
|
||||
P(d, "type", NS"QPixmap");
|
||||
P(d, "numchild", "0");
|
||||
d.disarm();
|
||||
#else
|
||||
Q_UNUSED(d);
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
|
||||
static void qDumpQSet(QDumper &d)
|
||||
{
|
||||
@@ -2691,10 +2691,12 @@ static void handleProtocolVersion2and3(QDumper & d)
|
||||
qDumpStdList(d);
|
||||
break;
|
||||
case 'I':
|
||||
#if USE_QT_GUI
|
||||
if (isEqual(type, "QImage"))
|
||||
qDumpQImage(d);
|
||||
else if (isEqual(type, "QImageData"))
|
||||
qDumpQImageData(d);
|
||||
#endif
|
||||
break;
|
||||
case 'L':
|
||||
if (isEqual(type, "QList"))
|
||||
@@ -2731,8 +2733,10 @@ static void handleProtocolVersion2and3(QDumper & d)
|
||||
qDumpQObjectSlotList(d);
|
||||
break;
|
||||
case 'P':
|
||||
#if USE_QT_GUI
|
||||
if (isEqual(type, "QPixmap"))
|
||||
qDumpQPixmap(d);
|
||||
#endif
|
||||
break;
|
||||
case 'S':
|
||||
if (isEqual(type, "QSet"))
|
||||
@@ -2854,7 +2858,9 @@ void *qDumpObjectData440(
|
||||
"\""NS"QVariant\","
|
||||
"\""NS"QVector\","
|
||||
"\""NS"QWeakPointer\","
|
||||
#if USE_QT_GUI
|
||||
"\""NS"QWidget\","
|
||||
#endif
|
||||
#ifdef Q_OS_WIN
|
||||
"\"basic_string\","
|
||||
"\"list\","
|
||||
@@ -2884,7 +2890,7 @@ void *qDumpObjectData440(
|
||||
<< ""NS"QString=\"" << sizeof(QString) << "\","
|
||||
<< ""NS"QStringList=\"" << sizeof(QStringList) << "\","
|
||||
<< ""NS"QObject=\"" << sizeof(QObject) << "\","
|
||||
#ifdef QT_GUI_LIB
|
||||
#if USE_QT_GUI
|
||||
<< ""NS"QWidget=\"" << sizeof(QWidget)<< "\","
|
||||
#endif
|
||||
#ifdef Q_OS_WIN
|
||||
|
||||
@@ -1,11 +1,20 @@
|
||||
TEMPLATE = lib
|
||||
CONFIG += shared
|
||||
QT = core
|
||||
linux-* {
|
||||
CONFIG -= release
|
||||
CONFIG += debug
|
||||
}
|
||||
SOURCES=gdbmacros.cpp
|
||||
|
||||
true {
|
||||
DEFINES += USE_QT_GUI=0
|
||||
QT = core
|
||||
} else {
|
||||
DEFINES += USE_QT_GUI=1
|
||||
QT = core gui
|
||||
}
|
||||
|
||||
exists($$QMAKE_INCDIR_QT/QtCore/private/qobject_p.h) {
|
||||
DEFINES+=HAS_QOBJECT_P_H
|
||||
}
|
||||
|
||||
@@ -529,6 +529,47 @@ protected:
|
||||
return true;
|
||||
}
|
||||
|
||||
virtual bool visit(CastExpressionAST *ast)
|
||||
{
|
||||
if (ast->lparen_token && ast->type_id && ast->rparen_token && ast->expression) {
|
||||
if (TypeIdAST *cast_type_id = ast->type_id->asTypeId()) {
|
||||
SpecifierAST *type_specifier = cast_type_id->type_specifier;
|
||||
if (! cast_type_id->declarator && type_specifier && ! type_specifier->next &&
|
||||
type_specifier->asNamedTypeSpecifier() && ast->expression &&
|
||||
ast->expression->asUnaryExpression()) {
|
||||
// this ast node is ambigious, e.g.
|
||||
// (a) + b
|
||||
// it can be parsed as
|
||||
// ((a) + b)
|
||||
// or
|
||||
// (a) (+b)
|
||||
accept(ast->expression);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
virtual bool visit(SizeofExpressionAST *ast)
|
||||
{
|
||||
if (ast->lparen_token && ast->expression && ast->rparen_token) {
|
||||
if (TypeIdAST *type_id = ast->expression->asTypeId()) {
|
||||
SpecifierAST *type_specifier = type_id->type_specifier;
|
||||
if (! type_id->declarator && type_specifier && ! type_specifier->next &&
|
||||
type_specifier->asNamedTypeSpecifier()) {
|
||||
// this sizeof expression is ambiguos, e.g.
|
||||
// sizeof (a)
|
||||
// `a' can be a typeid or a nested-expression.
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
LookupContext lookupContext(unsigned line, unsigned column) const;
|
||||
|
||||
private:
|
||||
|
||||
@@ -68,6 +68,7 @@ public:
|
||||
DebuggerPane(QWidget *parent)
|
||||
: QPlainTextEdit(parent)
|
||||
{
|
||||
setMaximumBlockCount(100000);
|
||||
m_clearContentsAction = new QAction(this);
|
||||
m_clearContentsAction->setText(tr("Clear contents"));
|
||||
m_clearContentsAction->setEnabled(true);
|
||||
|
||||
@@ -14,5 +14,13 @@ CONFIG += debug
|
||||
QMAKE_CXXFLAGS *= -O2
|
||||
}
|
||||
|
||||
true {
|
||||
DEFINES += USE_QT_GUI=0
|
||||
QT = core
|
||||
} else {
|
||||
DEFINES += USE_QT_GUI=1
|
||||
QT = core gui
|
||||
}
|
||||
|
||||
SOURCES += ../../../share/qtcreator/gdbmacros/gdbmacros.cpp
|
||||
|
||||
|
||||
@@ -81,16 +81,16 @@ static int generationCounter = 0;
|
||||
class WatchItem : public WatchData
|
||||
{
|
||||
public:
|
||||
WatchItem() { parent = 0; fetched = 0; }
|
||||
WatchItem() { parent = 0; fetchedTriggered = 0; }
|
||||
|
||||
WatchItem(const WatchData &data) : WatchData(data)
|
||||
{ parent = 0; fetched = 0; }
|
||||
{ parent = 0; fetchedTriggered = 0; }
|
||||
|
||||
void setData(const WatchData &data)
|
||||
{ static_cast<WatchData &>(*this) = data; }
|
||||
|
||||
WatchItem *parent;
|
||||
bool fetched; // children fetch has been triggered
|
||||
bool fetchedTriggered; // children fetch has been triggered
|
||||
QList<WatchItem *> children; // fetched children
|
||||
};
|
||||
|
||||
@@ -309,7 +309,7 @@ WatchModel::WatchModel(WatchHandler *handler, WatchType type)
|
||||
item->childCount = 1;
|
||||
item->state = 0;
|
||||
item->parent = m_root;
|
||||
item->fetched = true;
|
||||
item->fetchedTriggered = true;
|
||||
|
||||
m_root->children.append(item);
|
||||
}
|
||||
@@ -501,14 +501,15 @@ static QString niceType(QString type)
|
||||
|
||||
bool WatchModel::canFetchMore(const QModelIndex &index) const
|
||||
{
|
||||
return index.isValid() && !watchItem(index)->fetched;
|
||||
return index.isValid() && !watchItem(index)->fetchedTriggered;
|
||||
}
|
||||
|
||||
void WatchModel::fetchMore(const QModelIndex &index)
|
||||
{
|
||||
QTC_ASSERT(index.isValid(), return);
|
||||
QTC_ASSERT(!watchItem(index)->fetched, return);
|
||||
QTC_ASSERT(!watchItem(index)->fetchedTriggered, return);
|
||||
if (WatchItem *item = watchItem(index)) {
|
||||
item->fetchedTriggered = true;
|
||||
WatchData data = *item;
|
||||
data.setChildrenNeeded();
|
||||
emit m_handler->watchDataUpdateNeeded(data);
|
||||
|
||||
@@ -1980,7 +1980,9 @@ class CPLUSPLUS_EXPORT SizeofExpressionAST: public ExpressionAST
|
||||
{
|
||||
public:
|
||||
unsigned sizeof_token;
|
||||
unsigned lparen_token;
|
||||
ExpressionAST *expression;
|
||||
unsigned rparen_token;
|
||||
|
||||
public:
|
||||
virtual SizeofExpressionAST *asSizeofExpression()
|
||||
|
||||
@@ -3158,7 +3158,8 @@ bool Parser::parseUnaryExpression(ExpressionAST *&node)
|
||||
if (LA() == T_LPAREN) {
|
||||
unsigned lparen_token = consumeToken();
|
||||
if (parseTypeId(ast->expression) && LA() == T_RPAREN) {
|
||||
consumeToken();
|
||||
ast->lparen_token = lparen_token;
|
||||
ast->rparen_token = consumeToken();
|
||||
node = ast;
|
||||
return true;
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user