X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=gui%2Ftraceloader.h;h=0954078219fba68bd3e188b72d56027cd3b01d7b;hb=a0708b02018902497da4df6c9be05cd053374afc;hp=e9c4171026b2d4b82f20d97e1f9e56b6fb14ecab;hpb=20b1f6dc3783cec612fe3712c4b6c1ca65d4a5f4;p=apitrace diff --git a/gui/traceloader.h b/gui/traceloader.h index e9c4171..0954078 100644 --- a/gui/traceloader.h +++ b/gui/traceloader.h @@ -14,55 +14,85 @@ class TraceLoader : public QObject { Q_OBJECT public: - TraceLoader(ApiTrace *parent); + TraceLoader(QObject *parent=0); ~TraceLoader(); + + ApiTraceCallSignature *signature(unsigned id); + void addSignature(unsigned id, ApiTraceCallSignature *signature); + + ApiTraceEnumSignature *enumSignature(unsigned id); + void addEnumSignature(unsigned id, ApiTraceEnumSignature *signature); + public slots: void loadTrace(const QString &filename); - void loadFrame(int frameIdx); - void setFrameMarker(ApiTrace::FrameMarker marker); + void loadFrame(ApiTraceFrame *frame); + void findFrameStart(ApiTraceFrame *frame); + void findFrameEnd(ApiTraceFrame *frame); + void findCallIndex(int index); + void search(const ApiTrace::SearchRequest &request); signals: void startedParsing(); - void parsed(float percent); + void parsed(int percent); + void guessedApi(int api); void finishedParsing(); void framesLoaded(const QList &frames); - void frameLoaded(int frameIdx, - const QVector &calls, - quint64 binaryDataSize); + void frameContentsLoaded(ApiTraceFrame *frame, + const QVector &calls, + quint64 binaryDataSize); + void searchResult(const ApiTrace::SearchRequest &request, + ApiTrace::SearchResult result, + ApiTraceCall *call); + void foundFrameStart(ApiTraceFrame *frame); + void foundFrameEnd(ApiTraceFrame *frame); + void foundCallIndex(ApiTraceCall *call); private: - struct FrameOffset { - FrameOffset() + struct FrameBookmark { + FrameBookmark() : numberOfCalls(0) {} - FrameOffset(const Trace::File::Offset &s) + FrameBookmark(const trace::ParseBookmark &s) : start(s), numberOfCalls(0) {} - Trace::File::Offset start; + trace::ParseBookmark start; int numberOfCalls; - unsigned callNumber; }; - bool isCallAFrameMarker(const Trace::Call *call) const; int numberOfFrames() const; int numberOfCallsInFrame(int frameIdx) const; void loadHelpFile(); + void guessApi(const trace::Call *call); void scanTrace(); void parseTrace(); + + void searchNext(const ApiTrace::SearchRequest &request); + void searchPrev(const ApiTrace::SearchRequest &request); + + int callInFrame(int callIdx) const; + bool callContains(trace::Call *call, + const QString &str, + Qt::CaseSensitivity sensitivity); + QVector fetchFrameContents(ApiTraceFrame *frame); + bool searchCallsBackwards(const QList &calls, + int frameIdx, + const ApiTrace::SearchRequest &request); + private: - ApiTrace *m_trace; - Trace::Parser m_parser; - QString m_fileName; - ApiTrace::FrameMarker m_frameMarker; + trace::Parser m_parser; - typedef QMap FrameOffsets; - FrameOffsets m_frameOffsets; + typedef QMap FrameBookmarks; + FrameBookmarks m_frameBookmarks; + QList m_createdFrames; QHash m_helpHash; + + QVector m_signatures; + QVector m_enumSignatures; }; #endif