X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=gui%2Fapitracecall.h;h=15bc627134edb082adf705d8050e2a9a8debb911;hb=d9d9d22837705de6a2c42ad3f9b23223a2b98fe0;hp=15dca1321ece3703f50073020c1ab82ce350b9ec;hpb=353f0535f43b54d04cc9c8080790ffac606e5b0b;p=apitrace diff --git a/gui/apitracecall.h b/gui/apitracecall.h index 15dca13..15bc627 100644 --- a/gui/apitracecall.h +++ b/gui/apitracecall.h @@ -14,24 +14,26 @@ class ApiTrace; class TraceLoader; -class VariantVisitor : public Trace::Visitor +class VariantVisitor : public trace::Visitor { public: VariantVisitor(TraceLoader *loader) : m_loader(loader) {} - virtual void visit(Trace::Null *); - virtual void visit(Trace::Bool *node); - virtual void visit(Trace::SInt *node); - virtual void visit(Trace::UInt *node); - virtual void visit(Trace::Float *node); - virtual void visit(Trace::String *node); - virtual void visit(Trace::Enum *e); - virtual void visit(Trace::Bitmask *bitmask); - virtual void visit(Trace::Struct *str); - virtual void visit(Trace::Array *array); - virtual void visit(Trace::Blob *blob); - virtual void visit(Trace::Pointer *ptr); + virtual void visit(trace::Null *); + virtual void visit(trace::Bool *node); + virtual void visit(trace::SInt *node); + virtual void visit(trace::UInt *node); + virtual void visit(trace::Float *node); + virtual void visit(trace::Double *node); + virtual void visit(trace::String *node); + virtual void visit(trace::Enum *e); + virtual void visit(trace::Bitmask *bitmask); + virtual void visit(trace::Struct *str); + 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 { @@ -53,23 +55,19 @@ struct ApiTraceError 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 > ValueList; + ValueList m_names; }; class ApiEnum { public: - ApiEnum(ApiTraceEnumSignature *sig=0); + ApiEnum(ApiTraceEnumSignature *sig=0, signed long long value = 0); QString toString() const; @@ -77,6 +75,7 @@ public: QString name() const; private: ApiTraceEnumSignature *m_sig; + signed long long m_value; }; Q_DECLARE_METATYPE(ApiEnum); @@ -99,7 +98,7 @@ class ApiBitmask public: typedef QList > Signature; - ApiBitmask(const Trace::Bitmask *bitmask = 0); + ApiBitmask(const trace::Bitmask *bitmask = 0); QString toString() const; @@ -107,7 +106,7 @@ public: Signature signature() const; private: - void init(const Trace::Bitmask *bitmask); + void init(const trace::Bitmask *bitmask); private: Signature m_sig; unsigned long long m_value; @@ -122,14 +121,14 @@ public: QStringList memberNames; }; - ApiStruct(const Trace::Struct *s = 0); + ApiStruct(const trace::Struct *s = 0); - QString toString() const; + QString toString(bool multiLine = false) const; Signature signature() const; QList values() const; private: - void init(const Trace::Struct *bitmask); + void init(const trace::Struct *bitmask); private: Signature m_sig; QList m_members; @@ -139,14 +138,14 @@ Q_DECLARE_METATYPE(ApiStruct); class ApiArray { public: - ApiArray(const Trace::Array *arr = 0); + ApiArray(const trace::Array *arr = 0); ApiArray(const QVector &vals); - QString toString() const; + QString toString(bool multiLine = false) const; QVector values() const; private: - void init(const Trace::Array *arr); + void init(const trace::Array *arr); private: QVector m_array; }; @@ -204,6 +203,8 @@ private: QUrl m_helpUrl; }; +class ApiTraceCall; + class ApiTraceEvent { public: @@ -221,6 +222,8 @@ 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; @@ -243,8 +246,10 @@ Q_DECLARE_METATYPE(ApiTraceEvent*); class ApiTraceCall : public ApiTraceEvent { public: + ApiTraceCall(ApiTraceCall *parentCall, TraceLoader *loader, + const trace::Call *tcall); ApiTraceCall(ApiTraceFrame *parentFrame, TraceLoader *loader, - const Trace::Call *tcall); + const trace::Call *tcall); ~ApiTraceCall(); int index() const; @@ -252,11 +257,21 @@ public: QStringList argNames() const; QVector arguments() const; QVariant returnValue() const; + trace::CallFlags flags() const; QUrl helpUrl() const; void setHelpUrl(const QUrl &url); ApiTraceFrame *parentFrame()const; void setParentFrame(ApiTraceFrame *frame); + int callIndex(ApiTraceCall *call) const; + + ApiTraceEvent *parentEvent() const; + ApiTraceCall *parentCall() const; + QVector children() const; + ApiTraceEvent *eventAtRow(int row) const; + void addChild(ApiTraceCall *call); + void finishedAddingChildren(); + bool hasError() const; QString error() const; void setError(const QString &msg); @@ -279,17 +294,28 @@ public: 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; QVector m_argValues; QVariant m_returnValue; + trace::CallFlags m_flags; ApiTraceFrame *m_parentFrame; + ApiTraceCall *m_parentCall; + QVector m_children; QVector m_editedValues; QString m_error; + QString m_backtrace; + mutable QString m_richText; mutable QString m_searchText; }; @@ -310,14 +336,15 @@ public: 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 calls() const; - void setCalls(const QVector &calls, + void setCalls(const QVector &topLevelCalls, + const QVector &allCalls, quint64 binaryDataSize); ApiTraceCall *findNextCall(ApiTraceCall *from, @@ -330,18 +357,23 @@ public: int binaryDataSize() const; - bool loaded() const; - void setLoaded(bool l); + bool isLoaded() const; void setLastCallIndex(unsigned index); unsigned lastCallIndex() const; + + void setThumbnail(const QImage & thumbnail); + const QImage & thumbnail() const; + private: ApiTrace *m_parentTrace; quint64 m_binaryDataSize; + QVector m_children; QVector m_calls; bool m_loaded; unsigned m_callsToLoad; unsigned m_lastCallIndex; + QImage m_thumbnail; }; Q_DECLARE_METATYPE(ApiTraceFrame*);