9 #include "trace_model.hpp"
12 class VariantVisitor : public Trace::Visitor
15 virtual void visit(Trace::Null *);
16 virtual void visit(Trace::Bool *node);
17 virtual void visit(Trace::SInt *node);
18 virtual void visit(Trace::UInt *node);
19 virtual void visit(Trace::Float *node);
20 virtual void visit(Trace::String *node);
21 virtual void visit(Trace::Enum *e);
22 virtual void visit(Trace::Bitmask *bitmask);
23 virtual void visit(Trace::Struct *str);
24 virtual void visit(Trace::Array *array);
25 virtual void visit(Trace::Blob *blob);
26 virtual void visit(Trace::Pointer *ptr);
28 QVariant variant() const
40 ApiPointer(int val=0);
42 QString toString() const;
46 Q_DECLARE_METATYPE(ApiPointer);
51 typedef QList<QPair<QString, unsigned long long> > Signature;
53 ApiBitmask(const Trace::Bitmask *bitmask = 0);
55 QString toString() const;
58 void init(const Trace::Bitmask *bitmask);
61 unsigned long long m_value;
63 Q_DECLARE_METATYPE(ApiBitmask);
70 QStringList memberNames;
73 ApiStruct(const Trace::Struct *s = 0);
75 QString toString() const;
78 void init(const Trace::Struct *bitmask);
81 QList<QVariant> m_members;
83 Q_DECLARE_METATYPE(ApiStruct);
88 ApiArray(const Trace::Array *arr = 0);
90 QString toString() const;
93 void init(const Trace::Array *arr);
95 QList<QVariant> m_array;
97 Q_DECLARE_METATYPE(ApiArray);
100 QString apiVariantToString(const QVariant &variant);
104 class ApiTraceState {
107 explicit ApiTraceState(const QVariantMap &parseJson);
109 bool isEmpty() const;
110 QVariantMap parameters() const;
111 QStringList shaderSources() const;
114 QVariantMap m_parameters;
115 QStringList m_shaderSources;
128 ApiTraceEvent(Type t);
130 Type type() const { return m_type; }
132 virtual QStaticText staticText() const = 0;
133 virtual int numChildren() const = 0;
135 QVariantMap stateParameters() const;
136 ApiTraceState state() const;
137 void setState(const ApiTraceState &state);
141 ApiTraceState m_state;
143 Q_DECLARE_METATYPE(ApiTraceEvent*);
145 class ApiTraceCall : public ApiTraceEvent
153 QStringList argNames;
154 QVariantList argValues;
155 QVariant returnValue;
156 ApiTraceFrame *parentFrame;
159 QString toHtml() const;
160 QString filterText() const;
161 QStaticText staticText() const;
162 int numChildren() const;
163 bool hasBinaryData() const;
164 int binaryDataIndex() const;
166 mutable QString m_richText;
167 mutable QString m_filterText;
168 mutable QStaticText m_staticText;
169 mutable bool m_hasBinaryData;
170 mutable int m_binaryDataIndex;
172 Q_DECLARE_METATYPE(ApiTraceCall*);
174 class ApiTraceFrame : public ApiTraceEvent
179 QList<ApiTraceCall*> calls;
181 int numChildren() const;
182 QStaticText staticText() const;
184 mutable QStaticText m_staticText;
186 Q_DECLARE_METATYPE(ApiTraceFrame*);