X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=gui%2Ftraceloader.h;h=4b88ec605041527e2c9464e1aabbc9ee9cd484da;hb=081e59db6cf60b3b39d6b6ce58b4a1b2ff96020e;hp=32c7f1669e65883371a03de52ecec660610893cc;hpb=46963dad18214fc45b248ecdc9f5931cf417705d;p=apitrace diff --git a/gui/traceloader.h b/gui/traceloader.h index 32c7f16..4b88ec6 100644 --- a/gui/traceloader.h +++ b/gui/traceloader.h @@ -26,8 +26,17 @@ public: public slots: void loadTrace(const QString &filename); - void loadFrame(int frameIdx); + void loadFrame(ApiTraceFrame *frame); void setFrameMarker(ApiTrace::FrameMarker marker); + void searchNext(int startFrame, + const QString &str, + Qt::CaseSensitivity sensitivity); + void searchPrev(int startFrame, + const QString &str, + Qt::CaseSensitivity sensitivity); + void findFrameStart(ApiTraceFrame *frame); + void findFrameEnd(ApiTraceFrame *frame); + void findCallIndex(int index); signals: void startedParsing(); @@ -35,23 +44,26 @@ signals: 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(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; @@ -61,13 +73,24 @@ private: void scanTrace(); void parseTrace(); + 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 QString &str, + Qt::CaseSensitivity sensitivity); + private: Trace::Parser m_parser; QString m_fileName; ApiTrace::FrameMarker m_frameMarker; - typedef QMap FrameOffsets; - FrameOffsets m_frameOffsets; + typedef QMap FrameBookmarks; + FrameBookmarks m_frameBookmarks; + QList m_createdFrames; QHash m_helpHash;