forked from qt-creator/qt-creator
analyzer: code cosmetics
Change-Id: Id00cf1be9d07e47f7b61b8cc7e940629c84a48c1 Reviewed-on: http://codereview.qt.nokia.com/2707 Reviewed-by: hjk <qthjk@ovi.com>
This commit is contained in:
@@ -44,33 +44,65 @@
|
||||
#include "xmlprotocol/modelhelpers.h"
|
||||
#include "xmlprotocol/suppression.h"
|
||||
|
||||
#include <texteditor/basetexteditor.h>
|
||||
|
||||
#include <coreplugin/coreconstants.h>
|
||||
#include <projectexplorer/projectexplorer.h>
|
||||
#include <projectexplorer/project.h>
|
||||
#include <coreplugin/coreconstants.h>
|
||||
|
||||
#include <texteditor/basetexteditor.h>
|
||||
#include <utils/qtcassert.h>
|
||||
|
||||
#include <QtCore/QDir>
|
||||
#include <QtCore/QDebug>
|
||||
|
||||
#include <QtGui/QAction>
|
||||
#include <QtGui/QApplication>
|
||||
#include <QtGui/QClipboard>
|
||||
#include <QtGui/QLabel>
|
||||
#include <QtGui/QListView>
|
||||
#include <QtGui/QMenu>
|
||||
#include <QtGui/QPainter>
|
||||
#include <QtGui/QScrollBar>
|
||||
#include <QtGui/QSortFilterProxyModel>
|
||||
#include <QtGui/QStyledItemDelegate>
|
||||
#include <QtGui/QVBoxLayout>
|
||||
#include <QtGui/QAction>
|
||||
#include <QtGui/QClipboard>
|
||||
#include <QtGui/QApplication>
|
||||
#include <QtGui/QMenu>
|
||||
|
||||
using namespace Valgrind::XmlProtocol;
|
||||
|
||||
namespace Valgrind {
|
||||
namespace Internal {
|
||||
|
||||
class MemcheckErrorDelegate : public QStyledItemDelegate
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
/// This delegate can only work on one view at a time, parent. parent will also be the parent
|
||||
/// in the QObject parent-child system.
|
||||
explicit MemcheckErrorDelegate(QListView *parent);
|
||||
|
||||
QSize sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const;
|
||||
void paint(QPainter *painter, const QStyleOptionViewItem &option,
|
||||
const QModelIndex &index) const;
|
||||
|
||||
public slots:
|
||||
void currentChanged(const QModelIndex &now, const QModelIndex &previous);
|
||||
void viewResized();
|
||||
void layoutChanged();
|
||||
void copy();
|
||||
|
||||
private slots:
|
||||
void verticalScrolled();
|
||||
void openLinkInEditor(const QString &link);
|
||||
|
||||
private:
|
||||
// the constness of this method is a necessary lie because it is called from paint() const.
|
||||
QWidget *createDetailsWidget(const QModelIndex &errorIndex, QWidget *parent) const;
|
||||
|
||||
static const int s_itemMargin = 2;
|
||||
mutable QPersistentModelIndex m_detailsIndex;
|
||||
mutable QWidget *m_detailsWidget;
|
||||
mutable int m_detailsWidgetHeight;
|
||||
};
|
||||
|
||||
MemcheckErrorDelegate::MemcheckErrorDelegate(QListView *parent)
|
||||
: QStyledItemDelegate(parent),
|
||||
m_detailsWidget(0)
|
||||
@@ -84,8 +116,7 @@ QSize MemcheckErrorDelegate::sizeHint(const QStyleOptionViewItem &opt, const QMo
|
||||
const QListView *view = qobject_cast<const QListView *>(parent());
|
||||
const int viewportWidth = view->viewport()->width();
|
||||
const bool isSelected = view->selectionModel()->currentIndex() == index;
|
||||
|
||||
int dy = 2 * s_itemMargin;
|
||||
const int dy = 2 * s_itemMargin;
|
||||
|
||||
if (!isSelected) {
|
||||
QFontMetrics fm(opt.font);
|
||||
@@ -153,20 +184,20 @@ static QString makeFrameName(const Frame &frame, const QString &relativeTo,
|
||||
return QString("0x%1").arg(frame.instructionPointer(), 0, 16);
|
||||
}
|
||||
|
||||
QString relativeToPath()
|
||||
static QString relativeToPath()
|
||||
{
|
||||
// project for which we insert the snippet
|
||||
// The project for which we insert the snippet.
|
||||
const ProjectExplorer::Project *project =
|
||||
ProjectExplorer::ProjectExplorerPlugin::instance()->startupProject();
|
||||
|
||||
QString relativeTo( project ? project->projectDirectory() : QDir::homePath() );
|
||||
QString relativeTo(project ? project->projectDirectory() : QDir::homePath());
|
||||
if (!relativeTo.endsWith(QDir::separator()))
|
||||
relativeTo.append(QDir::separator());
|
||||
|
||||
return relativeTo;
|
||||
}
|
||||
|
||||
QString errorLocation(const QModelIndex &index, const Error &error,
|
||||
static QString errorLocation(const QModelIndex &index, const Error &error,
|
||||
bool link = false, const QString &linkAttr = QString())
|
||||
{
|
||||
const ErrorListModel *model = 0;
|
||||
@@ -190,9 +221,7 @@ QWidget *MemcheckErrorDelegate::createDetailsWidget(const QModelIndex &errorInde
|
||||
// don't include frameName here as it should wrap if required and pre-line is not supported
|
||||
// by Qt yet it seems
|
||||
const QString displayTextTemplate = QString("<code style='white-space:pre'>%1:</code> %2");
|
||||
|
||||
QString relativeTo = relativeToPath();
|
||||
|
||||
const QString relativeTo = relativeToPath();
|
||||
const Error error = errorIndex.data(ErrorListModel::ErrorRole).value<Error>();
|
||||
|
||||
QLabel *errorLabel = new QLabel();
|
||||
@@ -541,3 +570,5 @@ void MemcheckErrorView::setCurrentRow(int row)
|
||||
|
||||
} // namespace Internal
|
||||
} // namespace Valgrind
|
||||
|
||||
#include "memcheckerrorview.moc"
|
||||
|
@@ -36,53 +36,14 @@
|
||||
#define MEMCHECKERRORVIEW_H
|
||||
|
||||
#include <QtGui/QListView>
|
||||
#include <QtGui/QStyledItemDelegate>
|
||||
#include <QtGui/QLabel>
|
||||
|
||||
namespace Analyzer {
|
||||
class AnalyzerSettings;
|
||||
}
|
||||
|
||||
namespace ProjectExplorer {
|
||||
class Project;
|
||||
}
|
||||
|
||||
namespace Valgrind {
|
||||
namespace Internal {
|
||||
|
||||
class MemcheckErrorDelegate : public QStyledItemDelegate
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
/// This delegate can only work on one view at a time, parent. parent will also be the parent
|
||||
/// in the QObject parent-child system.
|
||||
explicit MemcheckErrorDelegate(QListView *parent);
|
||||
|
||||
virtual QSize sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const;
|
||||
virtual void paint(QPainter *painter, const QStyleOptionViewItem &option,
|
||||
const QModelIndex &index) const;
|
||||
|
||||
public slots:
|
||||
void currentChanged(const QModelIndex &now, const QModelIndex &previous);
|
||||
void viewResized();
|
||||
void layoutChanged();
|
||||
void copy();
|
||||
|
||||
private slots:
|
||||
void verticalScrolled();
|
||||
void openLinkInEditor(const QString &link);
|
||||
|
||||
private:
|
||||
// the constness of this method is a necessary lie because it is called from paint() const.
|
||||
QWidget *createDetailsWidget(const QModelIndex &errorIndex, QWidget *parent) const;
|
||||
|
||||
static const int s_itemMargin = 2;
|
||||
mutable QPersistentModelIndex m_detailsIndex;
|
||||
mutable QWidget *m_detailsWidget;
|
||||
mutable int m_detailsWidgetHeight;
|
||||
};
|
||||
|
||||
class MemcheckErrorView : public QListView
|
||||
{
|
||||
Q_OBJECT
|
||||
|
@@ -137,17 +137,23 @@ QString ErrorListModel::Private::formatLocation(const Error &error) const
|
||||
|
||||
QVariant ErrorListModel::Private::errorData(int row, int column, int role) const
|
||||
{
|
||||
// A dummy entry.
|
||||
if (row == 0 && errors.isEmpty()) {
|
||||
if (role == Qt::DisplayRole)
|
||||
return tr("No errors found");
|
||||
if (role == ErrorRole)
|
||||
return tr("No errors found");
|
||||
return QVariant();
|
||||
}
|
||||
|
||||
if (row < 0 || row >= errors.size())
|
||||
return QVariant();
|
||||
const Error &error = errors[row];
|
||||
|
||||
const QVector<Stack> stacks = error.stacks();
|
||||
const Stack stack = !stacks.isEmpty() ? stacks.first() : Stack();
|
||||
const Error &error = errors.at(row);
|
||||
|
||||
if (error.stacks().count())
|
||||
switch (role) {
|
||||
case Qt::DisplayRole:
|
||||
{
|
||||
case Qt::DisplayRole: {
|
||||
switch (column) {
|
||||
case WhatColumn:
|
||||
return error.what();
|
||||
@@ -155,8 +161,7 @@ QVariant ErrorListModel::Private::errorData(int row, int column, int role) const
|
||||
return formatLocation(error);
|
||||
case AbsoluteFilePathColumn:
|
||||
return formatAbsoluteFilePath(error);
|
||||
case LineColumn:
|
||||
{
|
||||
case LineColumn: {
|
||||
const qint64 line = findRelevantFrame(error).line();
|
||||
return line > 0 ? line : QVariant();
|
||||
}
|
||||
@@ -177,17 +182,14 @@ QVariant ErrorListModel::Private::errorData(int row, int column, int role) const
|
||||
}
|
||||
}
|
||||
case Qt::ToolTipRole:
|
||||
{
|
||||
return toolTipForFrame(findRelevantFrame(error));
|
||||
}
|
||||
case ErrorRole:
|
||||
return QVariant::fromValue<Error>(error);
|
||||
case AbsoluteFilePathRole:
|
||||
return formatAbsoluteFilePath(error);
|
||||
case FileRole:
|
||||
return findRelevantFrame(error).file();
|
||||
case LineRole:
|
||||
{
|
||||
case LineRole: {
|
||||
const qint64 line = findRelevantFrame(error).line();
|
||||
return line > 0 ? line : QVariant();
|
||||
}
|
||||
@@ -200,8 +202,6 @@ QVariant ErrorListModel::data(const QModelIndex &index, int role) const
|
||||
if (!index.isValid())
|
||||
return QVariant();
|
||||
|
||||
QTC_ASSERT(index.model() == this, return QVariant());
|
||||
|
||||
if (!index.parent().isValid())
|
||||
return d->errorData(index.row(), index.column(), role);
|
||||
|
||||
@@ -241,13 +241,9 @@ QVariant ErrorListModel::headerData(int section, Qt::Orientation orientation, in
|
||||
|
||||
int ErrorListModel::rowCount(const QModelIndex &parent) const
|
||||
{
|
||||
//root
|
||||
if (!parent.isValid())
|
||||
return d->errors.count();
|
||||
|
||||
QTC_ASSERT(parent.model() == this, return 0);
|
||||
|
||||
return 0;
|
||||
if (parent.isValid())
|
||||
return 0;
|
||||
return qMax(1, d->errors.count());
|
||||
}
|
||||
|
||||
int ErrorListModel::columnCount(const QModelIndex &parent) const
|
||||
@@ -286,7 +282,7 @@ Error ErrorListModel::error(const QModelIndex &index) const
|
||||
const int r = index.row();
|
||||
if (r < 0 || r >= d->errors.size())
|
||||
return Error();
|
||||
return d->errors[r];
|
||||
return d->errors.at(r);
|
||||
}
|
||||
|
||||
void ErrorListModel::clear()
|
||||
|
@@ -47,9 +47,10 @@ class Frame;
|
||||
class ErrorListModel : public QAbstractItemModel
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
enum Column {
|
||||
WhatColumn=0,
|
||||
WhatColumn = 0,
|
||||
LocationColumn,
|
||||
AbsoluteFilePathColumn,
|
||||
LineColumn,
|
||||
@@ -63,7 +64,7 @@ public:
|
||||
};
|
||||
|
||||
enum Role {
|
||||
ErrorRole=Qt::UserRole,
|
||||
ErrorRole = Qt::UserRole,
|
||||
AbsoluteFilePathRole,
|
||||
FileRole,
|
||||
LineRole
|
||||
@@ -96,7 +97,7 @@ public:
|
||||
|
||||
void clear();
|
||||
|
||||
public Q_SLOTS:
|
||||
public slots:
|
||||
void addError(const Valgrind::XmlProtocol::Error &error);
|
||||
|
||||
private:
|
||||
|
@@ -94,21 +94,22 @@ namespace XmlProtocol {
|
||||
|
||||
class Parser::Private
|
||||
{
|
||||
Parser *const q;
|
||||
public:
|
||||
explicit Private(Parser *qq);
|
||||
|
||||
void parse(QIODevice *device);
|
||||
QString errorString;
|
||||
|
||||
void parse_error();
|
||||
private:
|
||||
void parseError();
|
||||
QVector<Frame> parseStack();
|
||||
Suppression parseSuppression();
|
||||
SuppressionFrame parseSuppressionFrame();
|
||||
Frame parse_frame();
|
||||
void parse_status();
|
||||
void parse_errorcounts();
|
||||
void parse_suppcounts();
|
||||
void parse_announcethread();
|
||||
Frame parseFrame();
|
||||
void parseStatus();
|
||||
void parseErrorCounts();
|
||||
void parseSuppressionCounts();
|
||||
void parseAnnounceThread();
|
||||
void checkProtocolVersion(const QString &versionStr);
|
||||
void checkTool(const QString &tool);
|
||||
XWhat parseXWhat();
|
||||
@@ -124,12 +125,14 @@ public:
|
||||
QString blockingReadElementText();
|
||||
|
||||
Tool tool;
|
||||
QString errorString;
|
||||
QXmlStreamReader reader;
|
||||
QHash<QString,MemcheckErrorKind> errorKindsByName_memcheck;
|
||||
QHash<QString,HelgrindErrorKind> errorKindsByName_helgrind;
|
||||
QHash<QString,PtrcheckErrorKind> errorKindsByName_ptrcheck;
|
||||
QHash<QString,Parser::Tool> toolsByName;
|
||||
QHash<QString, MemcheckErrorKind> errorKindsByName_memcheck;
|
||||
QHash<QString, HelgrindErrorKind> errorKindsByName_helgrind;
|
||||
QHash<QString, PtrcheckErrorKind> errorKindsByName_ptrcheck;
|
||||
QHash<QString, Parser::Tool> toolsByName;
|
||||
|
||||
private:
|
||||
Parser *const q;
|
||||
};
|
||||
|
||||
#undef ADD_ENUM
|
||||
@@ -137,9 +140,9 @@ public:
|
||||
|
||||
|
||||
Parser::Private::Private(Parser *qq)
|
||||
: q(qq),
|
||||
tool(Parser::Unknown)
|
||||
: q(qq)
|
||||
{
|
||||
tool = Parser::Unknown;
|
||||
toolsByName.insert(QLatin1String("memcheck"), Parser::Memcheck);
|
||||
toolsByName.insert(QLatin1String("ptrcheck"), Parser::Ptrcheck);
|
||||
toolsByName.insert(QLatin1String("exp-ptrcheck"), Parser::Ptrcheck);
|
||||
@@ -311,13 +314,14 @@ XWhat Parser::Private::parseXWhat()
|
||||
blockingReadNext();
|
||||
if (reader.isEndElement())
|
||||
break;
|
||||
if (reader.name() == QLatin1String("text"))
|
||||
const QStringRef name = reader.name();
|
||||
if (name == QLatin1String("text"))
|
||||
what.text = blockingReadElementText();
|
||||
else if (reader.name() == QLatin1String("leakedbytes"))
|
||||
else if (name == QLatin1String("leakedbytes"))
|
||||
what.leakedbytes = parseInt64(blockingReadElementText(), QLatin1String("error/xwhat[memcheck]/leakedbytes"));
|
||||
else if (reader.name() == QLatin1String("leakedblocks"))
|
||||
else if (name == QLatin1String("leakedblocks"))
|
||||
what.leakedblocks = parseInt64(blockingReadElementText(), QLatin1String("error/xwhat[memcheck]/leakedblocks"));
|
||||
else if (reader.name() == QLatin1String("hthreadid"))
|
||||
else if (name == QLatin1String("hthreadid"))
|
||||
what.hthreadid = parseInt64(blockingReadElementText(), QLatin1String("error/xwhat[memcheck]/hthreadid"));
|
||||
else if (reader.isStartElement())
|
||||
reader.skipCurrentElement();
|
||||
@@ -332,15 +336,16 @@ XauxWhat Parser::Private::parseXauxWhat()
|
||||
blockingReadNext();
|
||||
if (reader.isEndElement())
|
||||
break;
|
||||
if (reader.name() == QLatin1String("text"))
|
||||
const QStringRef name = reader.name();
|
||||
if (name == QLatin1String("text"))
|
||||
what.text = blockingReadElementText();
|
||||
else if (reader.name() == QLatin1String("file"))
|
||||
else if (name == QLatin1String("file"))
|
||||
what.file = blockingReadElementText();
|
||||
else if (reader.name() == QLatin1String("dir"))
|
||||
else if (name == QLatin1String("dir"))
|
||||
what.dir = blockingReadElementText();
|
||||
else if (reader.name() == QLatin1String("line"))
|
||||
else if (name == QLatin1String("line"))
|
||||
what.line = parseInt64(blockingReadElementText(), QLatin1String("error/xauxwhat/line"));
|
||||
else if (reader.name() == QLatin1String("hthreadid"))
|
||||
else if (name == QLatin1String("hthreadid"))
|
||||
what.hthreadid = parseInt64(blockingReadElementText(), QLatin1String("error/xauxwhat/hthreadid"));
|
||||
else if (reader.isStartElement())
|
||||
reader.skipCurrentElement();
|
||||
@@ -425,7 +430,7 @@ static Stack makeStack(const XauxWhat &xauxwhat, const QVector<Frame> &frames)
|
||||
return s;
|
||||
}
|
||||
|
||||
void Parser::Private::parse_error()
|
||||
void Parser::Private::parseError()
|
||||
{
|
||||
Error e;
|
||||
QVector<QVector<Frame> > frames;
|
||||
@@ -439,29 +444,30 @@ void Parser::Private::parse_error()
|
||||
break;
|
||||
if (reader.isStartElement())
|
||||
lastAuxWhat++;
|
||||
if (reader.name() == QLatin1String("unique"))
|
||||
const QStringRef name = reader.name();
|
||||
if (name == QLatin1String("unique"))
|
||||
e.setUnique(parseHex(blockingReadElementText(), QLatin1String("unique")));
|
||||
else if ( reader.name() == QLatin1String("tid"))
|
||||
else if (name == QLatin1String("tid"))
|
||||
e.setTid(parseInt64(blockingReadElementText(), QLatin1String("error/tid")));
|
||||
else if (reader.name() == QLatin1String("kind")) //TODO this is memcheck-specific:
|
||||
else if (name == QLatin1String("kind")) //TODO this is memcheck-specific:
|
||||
e.setKind(parseErrorKind(blockingReadElementText()));
|
||||
else if (reader.name() == QLatin1String("suppression"))
|
||||
else if (name == QLatin1String("suppression"))
|
||||
e.setSuppression(parseSuppression());
|
||||
else if (reader.name() == QLatin1String("xwhat")) {
|
||||
else if (name == QLatin1String("xwhat")) {
|
||||
const XWhat xw = parseXWhat();
|
||||
e.setWhat(xw.text);
|
||||
e.setLeakedBlocks(xw.leakedblocks);
|
||||
e.setLeakedBytes(xw.leakedbytes);
|
||||
e.setHelgrindThreadId(xw.hthreadid);
|
||||
}
|
||||
else if (reader.name() == QLatin1String("what"))
|
||||
else if (name == QLatin1String("what"))
|
||||
e.setWhat(blockingReadElementText());
|
||||
else if (reader.name() == QLatin1String("xauxwhat")) {
|
||||
else if (name == QLatin1String("xauxwhat")) {
|
||||
if (!currentAux.text.isEmpty())
|
||||
auxs.push_back(currentAux);
|
||||
currentAux = parseXauxWhat();
|
||||
}
|
||||
else if (reader.name() == QLatin1String("auxwhat")) {
|
||||
else if (name == QLatin1String("auxwhat")) {
|
||||
const QString aux = blockingReadElementText();
|
||||
//concatenate multiple consecutive <auxwhat> tags
|
||||
if (lastAuxWhat > 1) {
|
||||
@@ -476,7 +482,7 @@ void Parser::Private::parse_error()
|
||||
}
|
||||
lastAuxWhat = 0;
|
||||
}
|
||||
else if (reader.name() == QLatin1String("stack")) {
|
||||
else if (name == QLatin1String("stack")) {
|
||||
frames.push_back(parseStack());
|
||||
}
|
||||
else if (reader.isStartElement())
|
||||
@@ -499,7 +505,7 @@ void Parser::Private::parse_error()
|
||||
emit q->error(e);
|
||||
}
|
||||
|
||||
Frame Parser::Private::parse_frame()
|
||||
Frame Parser::Private::parseFrame()
|
||||
{
|
||||
Frame frame;
|
||||
|
||||
@@ -508,17 +514,18 @@ Frame Parser::Private::parse_frame()
|
||||
if (reader.isEndElement())
|
||||
break;
|
||||
if (reader.isStartElement()) {
|
||||
if (reader.name() == QLatin1String("ip"))
|
||||
const QStringRef name = reader.name();
|
||||
if (name == QLatin1String("ip"))
|
||||
frame.setInstructionPointer(parseHex(blockingReadElementText(), QLatin1String("error/frame/ip")));
|
||||
else if (reader.name() == QLatin1String("obj"))
|
||||
else if (name == QLatin1String("obj"))
|
||||
frame.setObject(blockingReadElementText());
|
||||
else if (reader.name() == QLatin1String("fn"))
|
||||
else if (name == QLatin1String("fn"))
|
||||
frame.setFunctionName( blockingReadElementText());
|
||||
else if (reader.name() == QLatin1String("dir"))
|
||||
else if (name == QLatin1String("dir"))
|
||||
frame.setDirectory(blockingReadElementText());
|
||||
else if (reader.name() == QLatin1String("file"))
|
||||
else if (name == QLatin1String("file"))
|
||||
frame.setFile( blockingReadElementText());
|
||||
else if (reader.name() == QLatin1String("line"))
|
||||
else if (name == QLatin1String("line"))
|
||||
frame.setLine(parseInt64(blockingReadElementText(), QLatin1String("error/frame/line")));
|
||||
else if (reader.isStartElement())
|
||||
reader.skipCurrentElement();
|
||||
@@ -528,7 +535,7 @@ Frame Parser::Private::parse_frame()
|
||||
return frame;
|
||||
}
|
||||
|
||||
void Parser::Private::parse_announcethread()
|
||||
void Parser::Private::parseAnnounceThread()
|
||||
{
|
||||
AnnounceThread at;
|
||||
|
||||
@@ -537,9 +544,10 @@ void Parser::Private::parse_announcethread()
|
||||
if (reader.isEndElement())
|
||||
break;
|
||||
if (reader.isStartElement()) {
|
||||
if (reader.name() == QLatin1String("hthreadid"))
|
||||
const QStringRef name = reader.name();
|
||||
if (name == QLatin1String("hthreadid"))
|
||||
at.setHelgrindThreadId(parseInt64(blockingReadElementText(), QLatin1String("announcethread/hthreadid")));
|
||||
else if (reader.name() == QLatin1String("stack"))
|
||||
else if (name == QLatin1String("stack"))
|
||||
at.setStack(parseStack());
|
||||
else if (reader.isStartElement())
|
||||
reader.skipCurrentElement();
|
||||
@@ -549,7 +557,7 @@ void Parser::Private::parse_announcethread()
|
||||
emit q->announceThread(at);
|
||||
}
|
||||
|
||||
void Parser::Private::parse_errorcounts()
|
||||
void Parser::Private::parseErrorCounts()
|
||||
{
|
||||
while (notAtEnd()) {
|
||||
blockingReadNext();
|
||||
@@ -564,9 +572,10 @@ void Parser::Private::parse_errorcounts()
|
||||
if (reader.isEndElement())
|
||||
break;
|
||||
if (reader.isStartElement()) {
|
||||
if (reader.name() == QLatin1String("unique"))
|
||||
const QStringRef name = reader.name();
|
||||
if (name == QLatin1String("unique"))
|
||||
unique = parseHex(blockingReadElementText(), QLatin1String("errorcounts/pair/unique"));
|
||||
else if (reader.name() == QLatin1String("count"))
|
||||
else if (name == QLatin1String("count"))
|
||||
count = parseInt64(blockingReadElementText(), QLatin1String("errorcounts/pair/count"));
|
||||
else if (reader.isStartElement())
|
||||
reader.skipCurrentElement();
|
||||
@@ -581,7 +590,7 @@ void Parser::Private::parse_errorcounts()
|
||||
}
|
||||
|
||||
|
||||
void Parser::Private::parse_suppcounts()
|
||||
void Parser::Private::parseSuppressionCounts()
|
||||
{
|
||||
while (notAtEnd()) {
|
||||
blockingReadNext();
|
||||
@@ -589,22 +598,23 @@ void Parser::Private::parse_suppcounts()
|
||||
break;
|
||||
if (reader.isStartElement()) {
|
||||
if (reader.name() == QLatin1String("pair")) {
|
||||
QString name;
|
||||
QString pairName;
|
||||
qint64 count = 0;
|
||||
while (notAtEnd()) {
|
||||
blockingReadNext();
|
||||
if (reader.isEndElement())
|
||||
break;
|
||||
if (reader.isStartElement()) {
|
||||
if (reader.name() == QLatin1String("name"))
|
||||
name = blockingReadElementText();
|
||||
else if (reader.name() == QLatin1String("count"))
|
||||
const QStringRef name = reader.name();
|
||||
if (name == QLatin1String("name"))
|
||||
pairName = blockingReadElementText();
|
||||
else if (name == QLatin1String("count"))
|
||||
count = parseInt64(blockingReadElementText(), QLatin1String("suppcounts/pair/count"));
|
||||
else if (reader.isStartElement())
|
||||
reader.skipCurrentElement();
|
||||
}
|
||||
}
|
||||
emit q->suppressionCount(name, count);
|
||||
emit q->suppressionCount(pairName, count);
|
||||
}
|
||||
else if (reader.isStartElement())
|
||||
reader.skipCurrentElement();
|
||||
@@ -612,7 +622,7 @@ void Parser::Private::parse_suppcounts()
|
||||
}
|
||||
}
|
||||
|
||||
void Parser::Private::parse_status()
|
||||
void Parser::Private::parseStatus()
|
||||
{
|
||||
Status s;
|
||||
|
||||
@@ -621,9 +631,10 @@ void Parser::Private::parse_status()
|
||||
if (reader.isEndElement())
|
||||
break;
|
||||
if (reader.isStartElement()) {
|
||||
if (reader.name() == QLatin1String("state"))
|
||||
const QStringRef name = reader.name();
|
||||
if (name == QLatin1String("state"))
|
||||
s.setState(parseState(blockingReadElementText()));
|
||||
else if (reader.name() == QLatin1String("time"))
|
||||
else if (name == QLatin1String("time"))
|
||||
s.setTime(blockingReadElementText());
|
||||
else if (reader.isStartElement())
|
||||
reader.skipCurrentElement();
|
||||
@@ -642,7 +653,7 @@ QVector<Frame> Parser::Private::parseStack()
|
||||
break;
|
||||
if (reader.isStartElement()) {
|
||||
if (reader.name() == QLatin1String("frame"))
|
||||
frames.append(parse_frame());
|
||||
frames.append(parseFrame());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -658,9 +669,10 @@ SuppressionFrame Parser::Private::parseSuppressionFrame()
|
||||
if (reader.isEndElement())
|
||||
break;
|
||||
if (reader.isStartElement()) {
|
||||
if (reader.name() == QLatin1String("obj"))
|
||||
const QStringRef name = reader.name();
|
||||
if (name == QLatin1String("obj"))
|
||||
frame.setObject(blockingReadElementText());
|
||||
else if (reader.name() == QLatin1String("fun"))
|
||||
else if (name == QLatin1String("fun"))
|
||||
frame.setFunction( blockingReadElementText());
|
||||
else if (reader.isStartElement())
|
||||
reader.skipCurrentElement();
|
||||
@@ -679,15 +691,16 @@ Suppression Parser::Private::parseSuppression()
|
||||
if (reader.isEndElement())
|
||||
break;
|
||||
if (reader.isStartElement()) {
|
||||
if (reader.name() == QLatin1String("sname"))
|
||||
const QStringRef name = reader.name();
|
||||
if (name == QLatin1String("sname"))
|
||||
supp.setName(blockingReadElementText());
|
||||
else if (reader.name() == QLatin1String("skind"))
|
||||
else if (name == QLatin1String("skind"))
|
||||
supp.setKind(blockingReadElementText());
|
||||
else if (reader.name() == QLatin1String("skaux"))
|
||||
else if (name == QLatin1String("skaux"))
|
||||
supp.setAuxKind(blockingReadElementText());
|
||||
else if (reader.name() == QLatin1String("rawtext"))
|
||||
else if (name == QLatin1String("rawtext"))
|
||||
supp.setRawText(blockingReadElementText());
|
||||
else if (reader.name() == QLatin1String("sframe"))
|
||||
else if (name == QLatin1String("sframe"))
|
||||
frames.push_back(parseSuppressionFrame());
|
||||
}
|
||||
}
|
||||
@@ -704,19 +717,20 @@ void Parser::Private::parse(QIODevice *device)
|
||||
try {
|
||||
while (notAtEnd()) {
|
||||
blockingReadNext();
|
||||
if (reader.name() == QLatin1String("error"))
|
||||
parse_error();
|
||||
else if (reader.name() == QLatin1String("announcethread"))
|
||||
parse_announcethread();
|
||||
else if (reader.name() == QLatin1String("status"))
|
||||
parse_status();
|
||||
else if (reader.name() == QLatin1String("errorcounts"))
|
||||
parse_errorcounts();
|
||||
else if (reader.name() == QLatin1String("suppcounts"))
|
||||
parse_suppcounts();
|
||||
else if (reader.name() == QLatin1String("protocolversion"))
|
||||
QStringRef name = reader.name();
|
||||
if (name == QLatin1String("error"))
|
||||
parseError();
|
||||
else if (name == QLatin1String("announcethread"))
|
||||
parseAnnounceThread();
|
||||
else if (name == QLatin1String("status"))
|
||||
parseStatus();
|
||||
else if (name == QLatin1String("errorcounts"))
|
||||
parseErrorCounts();
|
||||
else if (name == QLatin1String("suppcounts"))
|
||||
parseSuppressionCounts();
|
||||
else if (name == QLatin1String("protocolversion"))
|
||||
checkProtocolVersion(blockingReadElementText());
|
||||
else if (reader.name() == QLatin1String("protocoltool"))
|
||||
else if (name == QLatin1String("protocoltool"))
|
||||
checkTool(blockingReadElementText());
|
||||
}
|
||||
} catch (const ParserException &e) {
|
||||
|
@@ -39,8 +39,6 @@
|
||||
#include <QtCore/QString>
|
||||
#include <QtCore/QVector>
|
||||
|
||||
#include <algorithm>
|
||||
|
||||
namespace Valgrind {
|
||||
namespace XmlProtocol {
|
||||
|
||||
@@ -80,11 +78,10 @@ void Stack::swap(Stack &other)
|
||||
qSwap(d, other.d);
|
||||
}
|
||||
|
||||
Stack &Stack::operator=(const Stack &other)
|
||||
void Stack::operator=(const Stack &other)
|
||||
{
|
||||
Stack tmp(other);
|
||||
swap(tmp);
|
||||
return *this;
|
||||
}
|
||||
|
||||
bool Stack::operator==(const Stack &other) const
|
||||
|
@@ -32,8 +32,8 @@
|
||||
**
|
||||
**************************************************************************/
|
||||
|
||||
#ifndef LIBVALGRIND_PROTOCOL_STACK_H
|
||||
#define LIBVALGRIND_PROTOCOL_STACK_H
|
||||
#ifndef VALGRIND_PROTOCOL_STACK_H
|
||||
#define VALGRIND_PROTOCOL_STACK_H
|
||||
|
||||
#include <QtCore/QSharedDataPointer>
|
||||
|
||||
@@ -52,7 +52,7 @@ public:
|
||||
Stack();
|
||||
Stack(const Stack &other);
|
||||
~Stack();
|
||||
Stack &operator=(const Stack &other);
|
||||
void operator=(const Stack &other);
|
||||
void swap(Stack &other);
|
||||
bool operator==(const Stack &other) const;
|
||||
|
||||
@@ -84,4 +84,4 @@ private:
|
||||
} // namespace XmlProtocol
|
||||
} // namespace Stack
|
||||
|
||||
#endif // LIBVALGRIND_PROTOCOL_STACK_H
|
||||
#endif // VALGRIND_PROTOCOL_STACK_H
|
||||
|
Reference in New Issue
Block a user