Jose Fonseca | 9653f95 | 2015-05-19 16:32:43 +0100 | [diff] [blame] | 1 | #pragma once |
Zack Rusin | 601e837 | 2011-03-24 22:23:21 -0400 | [diff] [blame] | 2 | |
Zack Rusin | 952e9d4 | 2011-04-09 23:37:21 -0400 | [diff] [blame] | 3 | #include "apisurface.h" |
| 4 | |
Zack Rusin | 18eade5 | 2011-03-26 14:23:35 -0400 | [diff] [blame] | 5 | #include <QStaticText> |
Zack Rusin | 601e837 | 2011-03-24 22:23:21 -0400 | [diff] [blame] | 6 | #include <QStringList> |
Zack Rusin | c97fadc | 2011-04-07 15:16:59 -0400 | [diff] [blame] | 7 | #include <QUrl> |
Zack Rusin | 601e837 | 2011-03-24 22:23:21 -0400 | [diff] [blame] | 8 | #include <QVariant> |
| 9 | |
Zack Rusin | 9106537 | 2011-03-26 01:54:10 -0400 | [diff] [blame] | 10 | #include "trace_model.hpp" |
| 11 | |
| 12 | |
Zack Rusin | 7c1793e | 2011-04-16 23:14:25 -0400 | [diff] [blame] | 13 | class ApiTrace; |
Zack Rusin | ebf971e | 2011-09-06 17:44:43 -0400 | [diff] [blame] | 14 | class TraceLoader; |
Zack Rusin | 7c1793e | 2011-04-16 23:14:25 -0400 | [diff] [blame] | 15 | |
José Fonseca | b4a3d14 | 2011-10-27 07:43:19 +0100 | [diff] [blame] | 16 | class VariantVisitor : public trace::Visitor |
Zack Rusin | 9106537 | 2011-03-26 01:54:10 -0400 | [diff] [blame] | 17 | { |
| 18 | public: |
Jose Fonseca | 010f996 | 2016-03-05 14:45:41 +0000 | [diff] [blame] | 19 | virtual void visit(trace::Null *) override; |
| 20 | virtual void visit(trace::Bool *node) override; |
| 21 | virtual void visit(trace::SInt *node) override; |
| 22 | virtual void visit(trace::UInt *node) override; |
| 23 | virtual void visit(trace::Float *node) override; |
| 24 | virtual void visit(trace::Double *node) override; |
| 25 | virtual void visit(trace::String *node) override; |
| 26 | virtual void visit(trace::WString *node) override; |
| 27 | virtual void visit(trace::Enum *e) override; |
| 28 | virtual void visit(trace::Bitmask *bitmask) override; |
| 29 | virtual void visit(trace::Struct *str) override; |
| 30 | virtual void visit(trace::Array *array) override; |
| 31 | virtual void visit(trace::Blob *blob) override; |
| 32 | virtual void visit(trace::Pointer *ptr) override; |
| 33 | virtual void visit(trace::Repr *ptr) override; |
Zack Rusin | 9106537 | 2011-03-26 01:54:10 -0400 | [diff] [blame] | 34 | |
| 35 | QVariant variant() const |
| 36 | { |
| 37 | return m_variant; |
| 38 | } |
| 39 | private: |
| 40 | QVariant m_variant; |
| 41 | }; |
| 42 | |
Zack Rusin | 10fd477 | 2011-09-14 01:45:12 -0400 | [diff] [blame] | 43 | |
| 44 | struct ApiTraceError |
| 45 | { |
| 46 | int callIndex; |
| 47 | QString type; |
| 48 | QString message; |
| 49 | }; |
| 50 | |
Zack Rusin | d54055e | 2011-04-17 18:27:28 -0400 | [diff] [blame] | 51 | class ApiEnum |
| 52 | { |
| 53 | public: |
José Fonseca | 446ca50 | 2014-12-19 16:22:39 +0000 | [diff] [blame] | 54 | ApiEnum(const trace::EnumSig *sig=0, signed long long value = 0); |
Zack Rusin | d54055e | 2011-04-17 18:27:28 -0400 | [diff] [blame] | 55 | |
| 56 | QString toString() const; |
| 57 | |
| 58 | QVariant value() const; |
Zack Rusin | d54055e | 2011-04-17 18:27:28 -0400 | [diff] [blame] | 59 | private: |
José Fonseca | 446ca50 | 2014-12-19 16:22:39 +0000 | [diff] [blame] | 60 | const trace::EnumSig *m_sig; |
José Fonseca | eb64451 | 2011-12-11 10:33:55 +0000 | [diff] [blame] | 61 | signed long long m_value; |
Zack Rusin | d54055e | 2011-04-17 18:27:28 -0400 | [diff] [blame] | 62 | }; |
| 63 | Q_DECLARE_METATYPE(ApiEnum); |
Zack Rusin | 9106537 | 2011-03-26 01:54:10 -0400 | [diff] [blame] | 64 | |
| 65 | class ApiPointer |
| 66 | { |
| 67 | public: |
Zack Rusin | c6247dd | 2011-04-17 22:56:58 -0400 | [diff] [blame] | 68 | ApiPointer(unsigned long long val=0); |
Zack Rusin | 9106537 | 2011-03-26 01:54:10 -0400 | [diff] [blame] | 69 | |
| 70 | QString toString() const; |
Zack Rusin | c6247dd | 2011-04-17 22:56:58 -0400 | [diff] [blame] | 71 | |
| 72 | unsigned long long value() const; |
| 73 | |
Zack Rusin | 9106537 | 2011-03-26 01:54:10 -0400 | [diff] [blame] | 74 | private: |
Zack Rusin | c6247dd | 2011-04-17 22:56:58 -0400 | [diff] [blame] | 75 | unsigned long long m_value; |
Zack Rusin | 9106537 | 2011-03-26 01:54:10 -0400 | [diff] [blame] | 76 | }; |
| 77 | Q_DECLARE_METATYPE(ApiPointer); |
| 78 | |
| 79 | class ApiBitmask |
| 80 | { |
| 81 | public: |
| 82 | typedef QList<QPair<QString, unsigned long long> > Signature; |
| 83 | |
José Fonseca | b4a3d14 | 2011-10-27 07:43:19 +0100 | [diff] [blame] | 84 | ApiBitmask(const trace::Bitmask *bitmask = 0); |
Zack Rusin | 9106537 | 2011-03-26 01:54:10 -0400 | [diff] [blame] | 85 | |
| 86 | QString toString() const; |
| 87 | |
Zack Rusin | c6247dd | 2011-04-17 22:56:58 -0400 | [diff] [blame] | 88 | unsigned long long value() const; |
| 89 | Signature signature() const; |
| 90 | |
Zack Rusin | 9106537 | 2011-03-26 01:54:10 -0400 | [diff] [blame] | 91 | private: |
José Fonseca | b4a3d14 | 2011-10-27 07:43:19 +0100 | [diff] [blame] | 92 | void init(const trace::Bitmask *bitmask); |
Zack Rusin | 9106537 | 2011-03-26 01:54:10 -0400 | [diff] [blame] | 93 | private: |
| 94 | Signature m_sig; |
| 95 | unsigned long long m_value; |
| 96 | }; |
| 97 | Q_DECLARE_METATYPE(ApiBitmask); |
| 98 | |
| 99 | class ApiStruct |
| 100 | { |
| 101 | public: |
| 102 | struct Signature { |
| 103 | QString name; |
| 104 | QStringList memberNames; |
| 105 | }; |
| 106 | |
José Fonseca | b4a3d14 | 2011-10-27 07:43:19 +0100 | [diff] [blame] | 107 | ApiStruct(const trace::Struct *s = 0); |
Zack Rusin | 9106537 | 2011-03-26 01:54:10 -0400 | [diff] [blame] | 108 | |
José Fonseca | a596a9e | 2011-09-27 10:19:28 +0100 | [diff] [blame] | 109 | QString toString(bool multiLine = false) const; |
Zack Rusin | c6247dd | 2011-04-17 22:56:58 -0400 | [diff] [blame] | 110 | Signature signature() const; |
| 111 | QList<QVariant> values() const; |
Zack Rusin | 9106537 | 2011-03-26 01:54:10 -0400 | [diff] [blame] | 112 | |
| 113 | private: |
José Fonseca | b4a3d14 | 2011-10-27 07:43:19 +0100 | [diff] [blame] | 114 | void init(const trace::Struct *bitmask); |
Zack Rusin | 9106537 | 2011-03-26 01:54:10 -0400 | [diff] [blame] | 115 | private: |
| 116 | Signature m_sig; |
| 117 | QList<QVariant> m_members; |
| 118 | }; |
| 119 | Q_DECLARE_METATYPE(ApiStruct); |
| 120 | |
| 121 | class ApiArray |
| 122 | { |
| 123 | public: |
José Fonseca | b4a3d14 | 2011-10-27 07:43:19 +0100 | [diff] [blame] | 124 | ApiArray(const trace::Array *arr = 0); |
Zack Rusin | 77ff98a | 2011-08-28 22:30:35 -0400 | [diff] [blame] | 125 | ApiArray(const QVector<QVariant> &vals); |
Zack Rusin | 9106537 | 2011-03-26 01:54:10 -0400 | [diff] [blame] | 126 | |
José Fonseca | a596a9e | 2011-09-27 10:19:28 +0100 | [diff] [blame] | 127 | QString toString(bool multiLine = false) const; |
Zack Rusin | 9106537 | 2011-03-26 01:54:10 -0400 | [diff] [blame] | 128 | |
Zack Rusin | 77ff98a | 2011-08-28 22:30:35 -0400 | [diff] [blame] | 129 | QVector<QVariant> values() const; |
Zack Rusin | 9106537 | 2011-03-26 01:54:10 -0400 | [diff] [blame] | 130 | private: |
José Fonseca | b4a3d14 | 2011-10-27 07:43:19 +0100 | [diff] [blame] | 131 | void init(const trace::Array *arr); |
Zack Rusin | 9106537 | 2011-03-26 01:54:10 -0400 | [diff] [blame] | 132 | private: |
Zack Rusin | 77ff98a | 2011-08-28 22:30:35 -0400 | [diff] [blame] | 133 | QVector<QVariant> m_array; |
Zack Rusin | 9106537 | 2011-03-26 01:54:10 -0400 | [diff] [blame] | 134 | }; |
| 135 | Q_DECLARE_METATYPE(ApiArray); |
| 136 | |
| 137 | |
José Fonseca | e8a1aa9 | 2011-04-21 09:13:23 +0100 | [diff] [blame] | 138 | QString apiVariantToString(const QVariant &variant, bool multiLine = false); |
Zack Rusin | 9106537 | 2011-03-26 01:54:10 -0400 | [diff] [blame] | 139 | |
Zack Rusin | f6667d1 | 2011-03-30 11:03:37 -0400 | [diff] [blame] | 140 | class ApiTraceFrame; |
| 141 | |
Zack Rusin | 7c814f1 | 2011-04-09 19:20:58 -0400 | [diff] [blame] | 142 | class ApiTraceState { |
| 143 | public: |
| 144 | ApiTraceState(); |
| 145 | explicit ApiTraceState(const QVariantMap &parseJson); |
| 146 | |
| 147 | bool isEmpty() const; |
José Fonseca | 6b9d133 | 2011-08-01 00:08:40 +0100 | [diff] [blame] | 148 | const QVariantMap & parameters() const; |
| 149 | const QMap<QString, QString> & shaderSources() const; |
José Fonseca | 26b3417 | 2011-08-01 00:16:35 +0100 | [diff] [blame] | 150 | const QVariantMap & uniforms() const; |
José Fonseca | d1d1ecf | 2014-10-22 23:55:16 +0100 | [diff] [blame] | 151 | const QVariantMap & buffers() const; |
Martin Schulze | e9e8578 | 2016-03-23 17:03:16 +0100 | [diff] [blame] | 152 | const QVariantMap & shaderStorageBufferBlocks() const; |
José Fonseca | 6b9d133 | 2011-08-01 00:08:40 +0100 | [diff] [blame] | 153 | const QList<ApiTexture> & textures() const; |
| 154 | const QList<ApiFramebuffer> & framebuffers() const; |
Zack Rusin | 7c814f1 | 2011-04-09 19:20:58 -0400 | [diff] [blame] | 155 | |
Zack Rusin | 353f053 | 2011-09-15 20:23:27 -0400 | [diff] [blame] | 156 | ApiFramebuffer colorBuffer() const; |
Zack Rusin | 7c814f1 | 2011-04-09 19:20:58 -0400 | [diff] [blame] | 157 | private: |
| 158 | QVariantMap m_parameters; |
José Fonseca | f7a6b62 | 2011-04-13 10:37:13 +0100 | [diff] [blame] | 159 | QMap<QString, QString> m_shaderSources; |
José Fonseca | 26b3417 | 2011-08-01 00:16:35 +0100 | [diff] [blame] | 160 | QVariantMap m_uniforms; |
José Fonseca | d1d1ecf | 2014-10-22 23:55:16 +0100 | [diff] [blame] | 161 | QVariantMap m_buffers; |
Martin Schulze | e9e8578 | 2016-03-23 17:03:16 +0100 | [diff] [blame] | 162 | QVariantMap m_shaderStorageBufferBlocks; |
Zack Rusin | 952e9d4 | 2011-04-09 23:37:21 -0400 | [diff] [blame] | 163 | QList<ApiTexture> m_textures; |
Zack Rusin | a684641 | 2011-04-10 19:51:44 -0400 | [diff] [blame] | 164 | QList<ApiFramebuffer> m_framebuffers; |
Zack Rusin | 7c814f1 | 2011-04-09 19:20:58 -0400 | [diff] [blame] | 165 | }; |
Zack Rusin | f389ae8 | 2011-04-10 19:27:28 -0400 | [diff] [blame] | 166 | Q_DECLARE_METATYPE(ApiTraceState); |
Zack Rusin | 7c814f1 | 2011-04-09 19:20:58 -0400 | [diff] [blame] | 167 | |
Zack Rusin | ac4dd9a | 2011-08-28 00:38:13 -0400 | [diff] [blame] | 168 | class ApiTraceCallSignature |
| 169 | { |
| 170 | public: |
| 171 | ApiTraceCallSignature(const QString &name, |
| 172 | const QStringList &argNames); |
| 173 | ~ApiTraceCallSignature(); |
| 174 | |
| 175 | QString name() const |
| 176 | { |
| 177 | return m_name; |
| 178 | } |
| 179 | QStringList argNames() const |
| 180 | { |
| 181 | return m_argNames; |
| 182 | } |
| 183 | |
| 184 | QUrl helpUrl() const; |
| 185 | void setHelpUrl(const QUrl &url); |
| 186 | |
| 187 | private: |
| 188 | QString m_name; |
| 189 | QStringList m_argNames; |
| 190 | QUrl m_helpUrl; |
| 191 | }; |
| 192 | |
Zack Rusin | d9d9d22 | 2013-10-11 18:02:26 -0400 | [diff] [blame] | 193 | class ApiTraceCall; |
| 194 | |
Zack Rusin | f6667d1 | 2011-03-30 11:03:37 -0400 | [diff] [blame] | 195 | class ApiTraceEvent |
Zack Rusin | 601e837 | 2011-03-24 22:23:21 -0400 | [diff] [blame] | 196 | { |
| 197 | public: |
Zack Rusin | f6667d1 | 2011-03-30 11:03:37 -0400 | [diff] [blame] | 198 | enum Type { |
Zack Rusin | ed40bc6 | 2011-08-28 17:11:02 -0400 | [diff] [blame] | 199 | None = 0, |
| 200 | Call = 1 << 0, |
| 201 | Frame = 1 << 1 |
Zack Rusin | f6667d1 | 2011-03-30 11:03:37 -0400 | [diff] [blame] | 202 | }; |
| 203 | public: |
| 204 | ApiTraceEvent(); |
| 205 | ApiTraceEvent(Type t); |
Zack Rusin | 53484b2 | 2011-04-16 11:56:19 -0400 | [diff] [blame] | 206 | virtual ~ApiTraceEvent(); |
Zack Rusin | f6667d1 | 2011-03-30 11:03:37 -0400 | [diff] [blame] | 207 | |
Zack Rusin | ed40bc6 | 2011-08-28 17:11:02 -0400 | [diff] [blame] | 208 | Type type() const { return (Type)m_type; } |
Zack Rusin | f6667d1 | 2011-03-30 11:03:37 -0400 | [diff] [blame] | 209 | |
| 210 | virtual QStaticText staticText() const = 0; |
| 211 | virtual int numChildren() const = 0; |
Zack Rusin | d9d9d22 | 2013-10-11 18:02:26 -0400 | [diff] [blame] | 212 | virtual int callIndex(ApiTraceCall *call) const = 0; |
| 213 | virtual ApiTraceEvent *eventAtRow(int row) const = 0; |
Zack Rusin | f6667d1 | 2011-03-30 11:03:37 -0400 | [diff] [blame] | 214 | |
Zack Rusin | ed40bc6 | 2011-08-28 17:11:02 -0400 | [diff] [blame] | 215 | ApiTraceState *state() const; |
| 216 | void setState(ApiTraceState *state); |
| 217 | bool hasState() const |
| 218 | { |
| 219 | return m_state && !m_state->isEmpty(); |
| 220 | } |
Zack Rusin | 581e3ff | 2011-03-31 23:58:07 -0400 | [diff] [blame] | 221 | |
Dan McCabe | b6b6d7c | 2012-06-01 13:40:02 -0700 | [diff] [blame] | 222 | void setThumbnail(const QImage & thumbnail); |
| 223 | const QImage & thumbnail() const; |
| 224 | |
Dan McCabe | d139532 | 2012-06-01 13:40:03 -0700 | [diff] [blame] | 225 | virtual void missingThumbnail() = 0; |
| 226 | |
Zack Rusin | f6667d1 | 2011-03-30 11:03:37 -0400 | [diff] [blame] | 227 | protected: |
Zack Rusin | ed40bc6 | 2011-08-28 17:11:02 -0400 | [diff] [blame] | 228 | int m_type : 4; |
Zack Rusin | ed40bc6 | 2011-08-28 17:11:02 -0400 | [diff] [blame] | 229 | mutable int m_binaryDataIndex:8; |
| 230 | ApiTraceState *m_state; |
Zack Rusin | 53484b2 | 2011-04-16 11:56:19 -0400 | [diff] [blame] | 231 | |
| 232 | mutable QStaticText *m_staticText; |
Dan McCabe | b6b6d7c | 2012-06-01 13:40:02 -0700 | [diff] [blame] | 233 | |
| 234 | QImage m_thumbnail; |
Zack Rusin | f6667d1 | 2011-03-30 11:03:37 -0400 | [diff] [blame] | 235 | }; |
| 236 | Q_DECLARE_METATYPE(ApiTraceEvent*); |
| 237 | |
| 238 | class ApiTraceCall : public ApiTraceEvent |
| 239 | { |
| 240 | public: |
Zack Rusin | d9d9d22 | 2013-10-11 18:02:26 -0400 | [diff] [blame] | 241 | ApiTraceCall(ApiTraceCall *parentCall, TraceLoader *loader, |
| 242 | const trace::Call *tcall); |
Zack Rusin | ebf971e | 2011-09-06 17:44:43 -0400 | [diff] [blame] | 243 | ApiTraceCall(ApiTraceFrame *parentFrame, TraceLoader *loader, |
José Fonseca | b4a3d14 | 2011-10-27 07:43:19 +0100 | [diff] [blame] | 244 | const trace::Call *tcall); |
Zack Rusin | f6667d1 | 2011-03-30 11:03:37 -0400 | [diff] [blame] | 245 | ~ApiTraceCall(); |
| 246 | |
Zack Rusin | ead6aad | 2011-04-15 22:16:18 -0400 | [diff] [blame] | 247 | int index() const; |
| 248 | QString name() const; |
| 249 | QStringList argNames() const; |
Zack Rusin | f736a62 | 2011-08-28 22:19:46 -0400 | [diff] [blame] | 250 | QVector<QVariant> arguments() const; |
Zack Rusin | ead6aad | 2011-04-15 22:16:18 -0400 | [diff] [blame] | 251 | QVariant returnValue() const; |
José Fonseca | 340f569 | 2011-11-30 07:04:44 +0000 | [diff] [blame] | 252 | trace::CallFlags flags() const; |
Zack Rusin | ead6aad | 2011-04-15 22:16:18 -0400 | [diff] [blame] | 253 | QUrl helpUrl() const; |
| 254 | void setHelpUrl(const QUrl &url); |
| 255 | ApiTraceFrame *parentFrame()const; |
| 256 | void setParentFrame(ApiTraceFrame *frame); |
Zack Rusin | 18eade5 | 2011-03-26 14:23:35 -0400 | [diff] [blame] | 257 | |
Jose Fonseca | 010f996 | 2016-03-05 14:45:41 +0000 | [diff] [blame] | 258 | int callIndex(ApiTraceCall *call) const override; |
Zack Rusin | d9d9d22 | 2013-10-11 18:02:26 -0400 | [diff] [blame] | 259 | |
| 260 | ApiTraceEvent *parentEvent() const; |
| 261 | ApiTraceCall *parentCall() const; |
| 262 | QVector<ApiTraceCall*> children() const; |
Jose Fonseca | 010f996 | 2016-03-05 14:45:41 +0000 | [diff] [blame] | 263 | ApiTraceEvent *eventAtRow(int row) const override; |
Zack Rusin | d9d9d22 | 2013-10-11 18:02:26 -0400 | [diff] [blame] | 264 | void addChild(ApiTraceCall *call); |
| 265 | void finishedAddingChildren(); |
| 266 | |
Zack Rusin | b53b161 | 2011-04-19 01:33:58 -0400 | [diff] [blame] | 267 | bool hasError() const; |
| 268 | QString error() const; |
| 269 | void setError(const QString &msg); |
| 270 | |
Zack Rusin | f736a62 | 2011-08-28 22:19:46 -0400 | [diff] [blame] | 271 | QVector<QVariant> originalValues() const; |
Zack Rusin | 661842d | 2011-04-17 01:59:16 -0400 | [diff] [blame] | 272 | |
| 273 | bool edited() const; |
Zack Rusin | f736a62 | 2011-08-28 22:19:46 -0400 | [diff] [blame] | 274 | void setEditedValues(const QVector<QVariant> &lst); |
| 275 | QVector<QVariant> editedValues() const; |
Zack Rusin | e6bc912 | 2011-04-16 23:07:05 -0400 | [diff] [blame] | 276 | void revert(); |
| 277 | |
Zack Rusin | 8f98c3a | 2011-09-11 18:21:29 -0400 | [diff] [blame] | 278 | bool contains(const QString &str, |
Ruslan Kabatsayev | 75d6905 | 2019-02-20 13:41:18 +0300 | [diff] [blame] | 279 | Qt::CaseSensitivity sensitivity, |
| 280 | bool useRegex) const; |
Zack Rusin | 8f98c3a | 2011-09-11 18:21:29 -0400 | [diff] [blame] | 281 | |
Zack Rusin | b53b161 | 2011-04-19 01:33:58 -0400 | [diff] [blame] | 282 | ApiTrace *parentTrace() const; |
| 283 | |
Zack Rusin | 27cb2c4 | 2011-03-27 23:53:36 -0400 | [diff] [blame] | 284 | QString toHtml() const; |
Zack Rusin | dc79208 | 2011-08-27 23:29:19 -0400 | [diff] [blame] | 285 | QString searchText() const; |
Jose Fonseca | 010f996 | 2016-03-05 14:45:41 +0000 | [diff] [blame] | 286 | QStaticText staticText() const override; |
| 287 | int numChildren() const override; |
Zack Rusin | 8e7a4ff | 2011-04-07 01:15:48 -0400 | [diff] [blame] | 288 | bool hasBinaryData() const; |
| 289 | int binaryDataIndex() const; |
Eugene Velesevich | aa1b213 | 2013-04-23 17:56:14 +0400 | [diff] [blame] | 290 | |
| 291 | QString backtrace() const; |
| 292 | void setBacktrace(QString backtrace); |
Dan McCabe | d139532 | 2012-06-01 13:40:03 -0700 | [diff] [blame] | 293 | |
Jose Fonseca | 010f996 | 2016-03-05 14:45:41 +0000 | [diff] [blame] | 294 | void missingThumbnail() override; |
Dan McCabe | d139532 | 2012-06-01 13:40:03 -0700 | [diff] [blame] | 295 | |
Zack Rusin | 18eade5 | 2011-03-26 14:23:35 -0400 | [diff] [blame] | 296 | private: |
Zack Rusin | d9d9d22 | 2013-10-11 18:02:26 -0400 | [diff] [blame] | 297 | void loadData(TraceLoader *loader, |
| 298 | const trace::Call *tcall); |
| 299 | private: |
Zack Rusin | ead6aad | 2011-04-15 22:16:18 -0400 | [diff] [blame] | 300 | int m_index; |
Vladimir Vukicevic | a9c4247 | 2013-11-30 13:40:31 -0500 | [diff] [blame] | 301 | unsigned m_thread; |
Zack Rusin | ac4dd9a | 2011-08-28 00:38:13 -0400 | [diff] [blame] | 302 | ApiTraceCallSignature *m_signature; |
Zack Rusin | f736a62 | 2011-08-28 22:19:46 -0400 | [diff] [blame] | 303 | QVector<QVariant> m_argValues; |
Zack Rusin | ead6aad | 2011-04-15 22:16:18 -0400 | [diff] [blame] | 304 | QVariant m_returnValue; |
José Fonseca | 340f569 | 2011-11-30 07:04:44 +0000 | [diff] [blame] | 305 | trace::CallFlags m_flags; |
Zack Rusin | ead6aad | 2011-04-15 22:16:18 -0400 | [diff] [blame] | 306 | ApiTraceFrame *m_parentFrame; |
Zack Rusin | d9d9d22 | 2013-10-11 18:02:26 -0400 | [diff] [blame] | 307 | ApiTraceCall *m_parentCall; |
| 308 | QVector<ApiTraceCall*> m_children; |
Zack Rusin | ead6aad | 2011-04-15 22:16:18 -0400 | [diff] [blame] | 309 | |
Zack Rusin | f736a62 | 2011-08-28 22:19:46 -0400 | [diff] [blame] | 310 | QVector<QVariant> m_editedValues; |
Zack Rusin | 661842d | 2011-04-17 01:59:16 -0400 | [diff] [blame] | 311 | |
Zack Rusin | b53b161 | 2011-04-19 01:33:58 -0400 | [diff] [blame] | 312 | QString m_error; |
| 313 | |
Eugene Velesevich | aa1b213 | 2013-04-23 17:56:14 +0400 | [diff] [blame] | 314 | QString m_backtrace; |
| 315 | |
Zack Rusin | 18eade5 | 2011-03-26 14:23:35 -0400 | [diff] [blame] | 316 | mutable QString m_richText; |
Zack Rusin | dc79208 | 2011-08-27 23:29:19 -0400 | [diff] [blame] | 317 | mutable QString m_searchText; |
Zack Rusin | 601e837 | 2011-03-24 22:23:21 -0400 | [diff] [blame] | 318 | }; |
Zack Rusin | 96130ac | 2011-03-27 01:48:36 -0400 | [diff] [blame] | 319 | Q_DECLARE_METATYPE(ApiTraceCall*); |
Zack Rusin | 601e837 | 2011-03-24 22:23:21 -0400 | [diff] [blame] | 320 | |
Zack Rusin | f6667d1 | 2011-03-30 11:03:37 -0400 | [diff] [blame] | 321 | class ApiTraceFrame : public ApiTraceEvent |
| 322 | { |
| 323 | public: |
Zack Rusin | ebf971e | 2011-09-06 17:44:43 -0400 | [diff] [blame] | 324 | ApiTraceFrame(ApiTrace *parent=0); |
Zack Rusin | c174343 | 2011-09-13 17:58:58 -0400 | [diff] [blame] | 325 | ~ApiTraceFrame(); |
Zack Rusin | f6667d1 | 2011-03-30 11:03:37 -0400 | [diff] [blame] | 326 | int number; |
Zack Rusin | 1d31b6c | 2011-04-26 22:30:25 -0400 | [diff] [blame] | 327 | |
| 328 | bool isEmpty() const; |
Zack Rusin | f6667d1 | 2011-03-30 11:03:37 -0400 | [diff] [blame] | 329 | |
Zack Rusin | ebf971e | 2011-09-06 17:44:43 -0400 | [diff] [blame] | 330 | void setParentTrace(ApiTrace *parent); |
Zack Rusin | 7c1793e | 2011-04-16 23:14:25 -0400 | [diff] [blame] | 331 | ApiTrace *parentTrace() const; |
Zack Rusin | 7c1793e | 2011-04-16 23:14:25 -0400 | [diff] [blame] | 332 | |
Zack Rusin | 20b1f6d | 2011-09-06 11:50:07 -0400 | [diff] [blame] | 333 | void setNumChildren(int num); |
Jose Fonseca | 010f996 | 2016-03-05 14:45:41 +0000 | [diff] [blame] | 334 | int numChildren() const override; |
Zack Rusin | 3176ebe | 2011-09-06 21:11:36 -0400 | [diff] [blame] | 335 | int numChildrenToLoad() const; |
Zack Rusin | d9d9d22 | 2013-10-11 18:02:26 -0400 | [diff] [blame] | 336 | int numTotalCalls() const; |
Jose Fonseca | 010f996 | 2016-03-05 14:45:41 +0000 | [diff] [blame] | 337 | QStaticText staticText() const override; |
Zack Rusin | 1d31b6c | 2011-04-26 22:30:25 -0400 | [diff] [blame] | 338 | |
Jose Fonseca | 010f996 | 2016-03-05 14:45:41 +0000 | [diff] [blame] | 339 | ApiTraceEvent *eventAtRow(int row) const override; |
| 340 | int callIndex(ApiTraceCall *call) const override; |
Zack Rusin | da7579b | 2011-09-13 17:33:05 -0400 | [diff] [blame] | 341 | ApiTraceCall *callWithIndex(int index) const; |
Zack Rusin | 4d0ef5d | 2011-08-28 22:05:31 -0400 | [diff] [blame] | 342 | QVector<ApiTraceCall*> calls() const; |
Zack Rusin | d9d9d22 | 2013-10-11 18:02:26 -0400 | [diff] [blame] | 343 | void setCalls(const QVector<ApiTraceCall*> &topLevelCalls, |
| 344 | const QVector<ApiTraceCall*> &allCalls, |
Zack Rusin | 4d0ef5d | 2011-08-28 22:05:31 -0400 | [diff] [blame] | 345 | quint64 binaryDataSize); |
Zack Rusin | 1d31b6c | 2011-04-26 22:30:25 -0400 | [diff] [blame] | 346 | |
Zack Rusin | 8f98c3a | 2011-09-11 18:21:29 -0400 | [diff] [blame] | 347 | ApiTraceCall *findNextCall(ApiTraceCall *from, |
| 348 | const QString &str, |
Ruslan Kabatsayev | 75d6905 | 2019-02-20 13:41:18 +0300 | [diff] [blame] | 349 | Qt::CaseSensitivity sensitivity, |
| 350 | bool useRegex) const; |
Zack Rusin | 8f98c3a | 2011-09-11 18:21:29 -0400 | [diff] [blame] | 351 | |
| 352 | ApiTraceCall *findPrevCall(ApiTraceCall *from, |
| 353 | const QString &str, |
Ruslan Kabatsayev | 75d6905 | 2019-02-20 13:41:18 +0300 | [diff] [blame] | 354 | Qt::CaseSensitivity sensitivity, |
| 355 | bool useRegex) const; |
Zack Rusin | 8f98c3a | 2011-09-11 18:21:29 -0400 | [diff] [blame] | 356 | |
Zack Rusin | 9e292fc | 2011-04-26 23:03:42 -0400 | [diff] [blame] | 357 | int binaryDataSize() const; |
Zack Rusin | 20b1f6d | 2011-09-06 11:50:07 -0400 | [diff] [blame] | 358 | |
Zack Rusin | 1a9f7af | 2011-09-18 19:40:47 -0400 | [diff] [blame] | 359 | bool isLoaded() const; |
Zack Rusin | 851d0b0 | 2011-09-14 22:04:07 -0400 | [diff] [blame] | 360 | |
| 361 | void setLastCallIndex(unsigned index); |
| 362 | unsigned lastCallIndex() const; |
Dan McCabe | 10bd424 | 2012-03-05 17:20:40 -0800 | [diff] [blame] | 363 | |
Jose Fonseca | 010f996 | 2016-03-05 14:45:41 +0000 | [diff] [blame] | 364 | void missingThumbnail() override; |
Dan McCabe | d139532 | 2012-06-01 13:40:03 -0700 | [diff] [blame] | 365 | |
Zack Rusin | 7c1793e | 2011-04-16 23:14:25 -0400 | [diff] [blame] | 366 | private: |
| 367 | ApiTrace *m_parentTrace; |
Zack Rusin | 1d31b6c | 2011-04-26 22:30:25 -0400 | [diff] [blame] | 368 | quint64 m_binaryDataSize; |
Zack Rusin | d9d9d22 | 2013-10-11 18:02:26 -0400 | [diff] [blame] | 369 | QVector<ApiTraceCall*> m_children; |
Zack Rusin | 4d0ef5d | 2011-08-28 22:05:31 -0400 | [diff] [blame] | 370 | QVector<ApiTraceCall*> m_calls; |
Zack Rusin | 20b1f6d | 2011-09-06 11:50:07 -0400 | [diff] [blame] | 371 | bool m_loaded; |
| 372 | unsigned m_callsToLoad; |
Zack Rusin | 851d0b0 | 2011-09-14 22:04:07 -0400 | [diff] [blame] | 373 | unsigned m_lastCallIndex; |
Zack Rusin | f6667d1 | 2011-03-30 11:03:37 -0400 | [diff] [blame] | 374 | }; |
| 375 | Q_DECLARE_METATYPE(ApiTraceFrame*); |