6 #include "trace_file.hpp"
7 #include "trace_parser.hpp"
13 class TraceLoader : public QObject
17 TraceLoader(QObject *parent=0);
21 ApiTraceCallSignature *signature(unsigned id);
22 void addSignature(unsigned id, ApiTraceCallSignature *signature);
24 ApiTraceEnumSignature *enumSignature(unsigned id);
25 void addEnumSignature(unsigned id, ApiTraceEnumSignature *signature);
28 void loadTrace(const QString &filename);
29 void loadFrame(ApiTraceFrame *frame);
30 void findFrameStart(ApiTraceFrame *frame);
31 void findFrameEnd(ApiTraceFrame *frame);
32 void findCallIndex(int index);
33 void search(const ApiTrace::SearchRequest &request);
36 void startedParsing();
37 void parsed(int percent);
38 void guessedApi(int api);
39 void finishedParsing();
41 void framesLoaded(const QList<ApiTraceFrame*> &frames);
42 void frameContentsLoaded(ApiTraceFrame *frame,
43 const QVector<ApiTraceCall*> &topLevelItems,
44 const QVector<ApiTraceCall*> &calls,
45 quint64 binaryDataSize);
47 void searchResult(const ApiTrace::SearchRequest &request,
48 ApiTrace::SearchResult result,
50 void foundFrameStart(ApiTraceFrame *frame);
51 void foundFrameEnd(ApiTraceFrame *frame);
52 void foundCallIndex(ApiTraceCall *call);
54 struct FrameBookmark {
58 FrameBookmark(const trace::ParseBookmark &s)
63 trace::ParseBookmark start;
66 int numberOfFrames() const;
67 int numberOfCallsInFrame(int frameIdx) const;
70 void guessApi(const trace::Call *call);
74 void searchNext(const ApiTrace::SearchRequest &request);
75 void searchPrev(const ApiTrace::SearchRequest &request);
77 int callInFrame(int callIdx) const;
78 bool callContains(trace::Call *call,
80 Qt::CaseSensitivity sensitivity);
81 QVector<ApiTraceCall*> fetchFrameContents(ApiTraceFrame *frame);
82 bool searchCallsBackwards(const QList<trace::Call*> &calls,
84 const ApiTrace::SearchRequest &request);
87 trace::Parser m_parser;
89 typedef QMap<int, FrameBookmark> FrameBookmarks;
90 FrameBookmarks m_frameBookmarks;
91 QList<ApiTraceFrame*> m_createdFrames;
93 QHash<QString, QUrl> m_helpHash;
95 QVector<ApiTraceCallSignature*> m_signatures;
96 QVector<ApiTraceEnumSignature*> m_enumSignatures;