virtual void visit(trace::Array *array);
virtual void visit(trace::Blob *blob);
virtual void visit(trace::Pointer *ptr);
+ virtual void visit(trace::Repr *ptr);
QVariant variant() const
{
class ApiTraceEnumSignature
{
public:
- ApiTraceEnumSignature(const QString &name = QString(),
- const QVariant &val=QVariant())\
- : m_name(name),
- m_value(val)
- {}
+ ApiTraceEnumSignature(const trace::EnumSig *sig);
+
+ QString name(signed long long value) const;
- QVariant value() const { return m_value; }
- QString name() const { return m_name; }
private:
- QString m_name;
- QVariant m_value;
+ typedef QList<QPair<QString, signed long long> > ValueList;
+ ValueList m_names;
};
class ApiEnum
{
public:
- ApiEnum(ApiTraceEnumSignature *sig=0);
+ ApiEnum(ApiTraceEnumSignature *sig=0, signed long long value = 0);
QString toString() const;
QString name() const;
private:
ApiTraceEnumSignature *m_sig;
+ signed long long m_value;
};
Q_DECLARE_METATYPE(ApiEnum);
QUrl m_helpUrl;
};
+class ApiTraceCall;
+
class ApiTraceEvent
{
public:
virtual QStaticText staticText() const = 0;
virtual int numChildren() const = 0;
+ virtual int callIndex(ApiTraceCall *call) const = 0;
+ virtual ApiTraceEvent *eventAtRow(int row) const = 0;
QVariantMap stateParameters() const;
ApiTraceState *state() const;
class ApiTraceCall : public ApiTraceEvent
{
public:
+ ApiTraceCall(ApiTraceCall *parentCall, TraceLoader *loader,
+ const trace::Call *tcall);
ApiTraceCall(ApiTraceFrame *parentFrame, TraceLoader *loader,
const trace::Call *tcall);
~ApiTraceCall();
ApiTraceFrame *parentFrame()const;
void setParentFrame(ApiTraceFrame *frame);
+ int callIndex(ApiTraceCall *call) const;
+
+ ApiTraceEvent *parentEvent() const;
+ ApiTraceCall *parentCall() const;
+ QVector<ApiTraceCall*> children() const;
+ ApiTraceEvent *eventAtRow(int row) const;
+ void addChild(ApiTraceCall *call);
+ void finishedAddingChildren();
+
bool hasError() const;
QString error() const;
void setError(const QString &msg);
int numChildren() const;
bool hasBinaryData() const;
int binaryDataIndex() const;
+
+ QString backtrace() const;
+ void setBacktrace(QString backtrace);
+private:
+ void loadData(TraceLoader *loader,
+ const trace::Call *tcall);
private:
int m_index;
ApiTraceCallSignature *m_signature;
QVariant m_returnValue;
trace::CallFlags m_flags;
ApiTraceFrame *m_parentFrame;
+ ApiTraceCall *m_parentCall;
+ QVector<ApiTraceCall*> m_children;
QVector<QVariant> m_editedValues;
QString m_error;
+ QString m_backtrace;
+
mutable QString m_richText;
mutable QString m_searchText;
};
void setNumChildren(int num);
int numChildren() const;
int numChildrenToLoad() const;
+ int numTotalCalls() const;
QStaticText staticText() const;
+ ApiTraceEvent *eventAtRow(int row) const;
int callIndex(ApiTraceCall *call) const;
- ApiTraceCall *call(int idx) const;
ApiTraceCall *callWithIndex(int index) const;
- void addCall(ApiTraceCall *call);
QVector<ApiTraceCall*> calls() const;
- void setCalls(const QVector<ApiTraceCall*> &calls,
+ void setCalls(const QVector<ApiTraceCall*> &topLevelCalls,
+ const QVector<ApiTraceCall*> &allCalls,
quint64 binaryDataSize);
ApiTraceCall *findNextCall(ApiTraceCall *from,
int binaryDataSize() const;
bool isLoaded() const;
- void setLoaded(bool l);
void setLastCallIndex(unsigned index);
unsigned lastCallIndex() const;
+
+ void setThumbnail(const QImage & thumbnail);
+ const QImage & thumbnail() const;
+
private:
ApiTrace *m_parentTrace;
quint64 m_binaryDataSize;
+ QVector<ApiTraceCall*> m_children;
QVector<ApiTraceCall*> m_calls;
bool m_loaded;
unsigned m_callsToLoad;
unsigned m_lastCallIndex;
+ QImage m_thumbnail;
};
Q_DECLARE_METATYPE(ApiTraceFrame*);