debugger: display size of bitfields in 'type' column

This commit is contained in:
hjk
2011-03-01 17:04:36 +01:00
parent 8bcaf428e1
commit fbdfb3acae
4 changed files with 14 additions and 1 deletions

View File

@@ -144,6 +144,8 @@ WatchData::WatchData() :
state(InitialState), state(InitialState),
editformat(0), editformat(0),
address(0), address(0),
bitpos(0),
bitsize(0),
generation(-1), generation(-1),
hasChildren(false), hasChildren(false),
valueEnabled(true), valueEnabled(true),

View File

@@ -128,6 +128,8 @@ public:
QByteArray type; // Type for further processing QByteArray type; // Type for further processing
QString displayedType;// Displayed type (optional) QString displayedType;// Displayed type (optional)
quint64 address; // Displayed address quint64 address; // Displayed address
uint bitpos; // Position within bit fields
uint bitsize; // Size in case of bit fields
qint32 generation; // When updated? qint32 generation; // When updated?
bool hasChildren; bool hasChildren;
bool valueEnabled; // Value will be enabled or not bool valueEnabled; // Value will be enabled or not

View File

@@ -285,9 +285,12 @@ static QString removeInitialNamespace(QString str, const QByteArray &ns)
QString WatchModel::displayType(const WatchData &data) const QString WatchModel::displayType(const WatchData &data) const
{ {
return data.displayedType.isEmpty() QString base = data.displayedType.isEmpty()
? niceTypeHelper(data.type) ? niceTypeHelper(data.type)
: data.displayedType; : data.displayedType;
if (data.bitsize)
base += QString(":%1").arg(data.bitsize);
return base;
} }
static int formatToIntegerBase(int format) static int formatToIntegerBase(int format)

View File

@@ -1399,6 +1399,12 @@ void parseWatchData(const QSet<QByteArray> &expandedINames,
mi = item.findChild("typeformats"); mi = item.findChild("typeformats");
if (mi.isValid()) if (mi.isValid())
data.typeFormats = QString::fromUtf8(mi.data()); data.typeFormats = QString::fromUtf8(mi.data());
mi = item.findChild("bitpos");
if (mi.isValid())
data.bitpos = mi.data().toInt();
mi = item.findChild("bitsize");
if (mi.isValid())
data.bitsize = mi.data().toInt();
setWatchDataValue(data, item); setWatchDataValue(data, item);
setWatchDataAddress(data, item.findChild("addr")); setWatchDataAddress(data, item.findChild("addr"));