]> git.cworth.org Git - apitrace/blobdiff - gui/traceloader.h
Update downloads link.
[apitrace] / gui / traceloader.h
index e9c4171026b2d4b82f20d97e1f9e56b6fb14ecab..0954078219fba68bd3e188b72d56027cd3b01d7b 100644 (file)
@@ -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<ApiTraceFrame*> &frames);
-    void frameLoaded(int frameIdx,
-                     const QVector<ApiTraceCall*> &calls,
-                     quint64 binaryDataSize);
+    void frameContentsLoaded(ApiTraceFrame *frame,
+                             const QVector<ApiTraceCall*> &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<ApiTraceCall*> fetchFrameContents(ApiTraceFrame *frame);
+     bool searchCallsBackwards(const QList<trace::Call*> &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<int, FrameOffset> FrameOffsets;
-    FrameOffsets m_frameOffsets;
+    typedef QMap<int, FrameBookmark> FrameBookmarks;
+    FrameBookmarks m_frameBookmarks;
+    QList<ApiTraceFrame*> m_createdFrames;
 
     QHash<QString, QUrl> m_helpHash;
+
+    QVector<ApiTraceCallSignature*> m_signatures;
+    QVector<ApiTraceEnumSignature*> m_enumSignatures;
 };
 
 #endif