X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=gui%2Fapitracecall.h;h=6c6b6074b6dcae2799e1f4a750cdc293120c3f53;hb=3801952b80cd7a7160f6410518f6e3740d461b60;hp=9d67febcf3f76ed327037f9c4c37ee80d974c945;hpb=35c2793ac758997a0a1c2e558d384ab94754987d;p=apitrace diff --git a/gui/apitracecall.h b/gui/apitracecall.h index 9d67feb..6c6b607 100644 --- a/gui/apitracecall.h +++ b/gui/apitracecall.h @@ -12,55 +12,62 @@ class ApiTrace; +class TraceLoader; -class VariantVisitor : public Trace::Visitor +class VariantVisitor : public trace::Visitor { public: - VariantVisitor(ApiTrace *trace) - : m_trace(trace) + 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 { return m_variant; } private: - ApiTrace *m_trace; + TraceLoader *m_loader; QVariant m_variant; }; + +struct ApiTraceError +{ + int callIndex; + QString type; + QString message; +}; + 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; @@ -68,6 +75,7 @@ public: QString name() const; private: ApiTraceEnumSignature *m_sig; + signed long long m_value; }; Q_DECLARE_METATYPE(ApiEnum); @@ -90,7 +98,7 @@ class ApiBitmask public: typedef QList > Signature; - ApiBitmask(const Trace::Bitmask *bitmask = 0); + ApiBitmask(const trace::Bitmask *bitmask = 0); QString toString() const; @@ -98,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; @@ -113,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; @@ -130,16 +138,16 @@ Q_DECLARE_METATYPE(ApiStruct); class ApiArray { public: - ApiArray(const Trace::Array *arr = 0); - ApiArray(const QList &vals); + ApiArray(const trace::Array *arr = 0); + ApiArray(const QVector &vals); - QString toString() const; + QString toString(bool multiLine = false) const; - QList values() const; + QVector values() const; private: - void init(const Trace::Array *arr); + void init(const trace::Array *arr); private: - QList m_array; + QVector m_array; }; Q_DECLARE_METATYPE(ApiArray); @@ -160,6 +168,7 @@ public: const QList & textures() const; const QList & framebuffers() const; + ApiFramebuffer colorBuffer() const; private: QVariantMap m_parameters; QMap m_shaderSources; @@ -233,14 +242,16 @@ Q_DECLARE_METATYPE(ApiTraceEvent*); class ApiTraceCall : public ApiTraceEvent { public: - ApiTraceCall(ApiTraceFrame *parentFrame, const Trace::Call *tcall); + ApiTraceCall(ApiTraceFrame *parentFrame, TraceLoader *loader, + const trace::Call *tcall); ~ApiTraceCall(); int index() const; QString name() const; QStringList argNames() const; - QVariantList arguments() const; + QVector arguments() const; QVariant returnValue() const; + trace::CallFlags flags() const; QUrl helpUrl() const; void setHelpUrl(const QUrl &url); ApiTraceFrame *parentFrame()const; @@ -250,13 +261,16 @@ public: QString error() const; void setError(const QString &msg); - QVariantList originalValues() const; + QVector originalValues() const; bool edited() const; - void setEditedValues(const QVariantList &lst); - QVariantList editedValues() const; + void setEditedValues(const QVector &lst); + QVector editedValues() const; void revert(); + bool contains(const QString &str, + Qt::CaseSensitivity sensitivity) const; + ApiTrace *parentTrace() const; QString toHtml() const; @@ -268,11 +282,12 @@ public: private: int m_index; ApiTraceCallSignature *m_signature; - QVariantList m_argValues; + QVector m_argValues; QVariant m_returnValue; + trace::CallFlags m_flags; ApiTraceFrame *m_parentFrame; - QVariantList m_editedValues; + QVector m_editedValues; QString m_error; @@ -284,26 +299,55 @@ Q_DECLARE_METATYPE(ApiTraceCall*); class ApiTraceFrame : public ApiTraceEvent { public: - ApiTraceFrame(ApiTrace *parent); + ApiTraceFrame(ApiTrace *parent=0); + ~ApiTraceFrame(); int number; bool isEmpty() const; + void setParentTrace(ApiTrace *parent); ApiTrace *parentTrace() const; + void setNumChildren(int num); int numChildren() const; + int numChildrenToLoad() const; QStaticText staticText() const; int callIndex(ApiTraceCall *call) const; ApiTraceCall *call(int idx) const; + ApiTraceCall *callWithIndex(int index) const; void addCall(ApiTraceCall *call); - QList calls() const; + QVector calls() const; + void setCalls(const QVector &calls, + quint64 binaryDataSize); + + ApiTraceCall *findNextCall(ApiTraceCall *from, + const QString &str, + Qt::CaseSensitivity sensitivity) const; + + ApiTraceCall *findPrevCall(ApiTraceCall *from, + const QString &str, + Qt::CaseSensitivity sensitivity) const; 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; - QList m_calls; + QVector m_calls; + bool m_loaded; + unsigned m_callsToLoad; + unsigned m_lastCallIndex; + QImage m_thumbnail; }; Q_DECLARE_METATYPE(ApiTraceFrame*);