blob: aa668009303a0e498ede6bb216a43a2566c73da9 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
|
/****************************************************************************
**
** Copyright (C) 2016 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of Qt Creator.
**
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 3 as published by the Free Software
** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
** included in the packaging of this file. Please review the following
** information to ensure the GNU General Public License requirements will
** be met: https://www.gnu.org/licenses/gpl-3.0.html.
**
****************************************************************************/
#pragma once
#include "debuggerprotocol.h"
#include <utils/treemodel.h>
#include <QCoreApplication>
#include <QMetaType>
#include <vector>
namespace Debugger {
namespace Internal {
class GdbMi;
class WatchItem : public Utils::TypedTreeItem<WatchItem, WatchItem>
{
public:
WatchItem();
void parse(const GdbMi &input, bool maySort);
bool isLocal() const;
bool isWatcher() const;
bool isInspect() const;
QString expression() const;
QString sourceExpression() const;
QString realName() const;
QString internalName() const;
QString toToolTip() const;
QVariant editValue() const;
int editType() const;
static const qint64 InvalidId = -1;
void setHasChildren(bool c) { wantsChildren = c; }
bool isValid() const { return !iname.isEmpty(); }
bool isVTablePointer() const;
int guessSize() const;
void setError(const QString &);
void setValue(const QString &);
QString toString() const;
static QString msgNotInScope();
static QString shadowedName(const QString &name, int seen);
static const QString &shadowedNameFormat();
QString hexAddress() const;
QString key() const { return address ? hexAddress() : iname; }
public:
qint64 id; // Token for the engine for internal mapping
QString iname; // Internal name sth like 'local.baz.public.a'
QString exp; // The expression
QString name; // Displayed name
QString value; // Displayed value
QString editvalue; // Displayed value
QString editformat; // Format of displayed value
DebuggerEncoding editencoding; // Encoding of displayed value
QString type; // Type for further processing
quint64 address; // Displayed address of the actual object
quint64 origaddr; // Address of the pointer referencing this item (gdb auto-deref)
uint size; // Size
uint bitpos; // Position within bit fields
uint bitsize; // Size in case of bit fields
int elided; // Full size if value was cut off, -1 if cut on unknown size, 0 otherwise
int arrayIndex; // -1 if not an array member
uchar sortGroup; // 0 - ordinary member, 1 - vptr, 2 - base class
bool wantsChildren;
bool valueEnabled; // Value will be enabled or not
bool valueEditable; // Value will be editable
uint autoDerefCount; // number of levels of automatic dereferencing that has taken place (for pointer types)
bool outdated; // \internal item is to be removed.
double time = 0; // Time used on the dumper side to produce this item
private:
void parseHelper(const GdbMi &input, bool maySort);
Q_DECLARE_TR_FUNCTIONS(Debugger::Internal::WatchHandler)
};
} // namespace Internal
} // namespace Debugger
|