]> git.cworth.org Git - apitrace/blob - gui/apitrace.h
Share function signatures.
[apitrace] / gui / apitrace.h
1 #ifndef APITRACE_H
2 #define APITRACE_H
3
4 #include "apitracecall.h"
5
6 #include <QObject>
7 #include <QSet>
8
9 class LoaderThread;
10 class SaverThread;
11
12 class ApiTrace : public QObject
13 {
14     Q_OBJECT
15 public:
16     enum FrameMarker {
17         FrameMarker_SwapBuffers,
18         FrameMarker_Flush,
19         FrameMarker_Finish,
20         FrameMarker_Clear
21     };
22     static bool isCallAFrameMarker(const ApiTraceCall *call,
23                                    FrameMarker marker);
24 public:
25     ApiTrace();
26     ~ApiTrace();
27
28     bool isEmpty() const;
29
30     QString fileName() const;
31
32     FrameMarker frameMarker() const;
33
34     ApiTraceState defaultState() const;
35
36     ApiTraceCallSignature *signature(const QString &callName);
37     void addSignature(ApiTraceCallSignature *signature);
38
39     QList<ApiTraceCall*> calls() const;
40     ApiTraceCall *callAt(int idx) const;
41     ApiTraceCall *callWithIndex(int idx) const;
42     int numCalls() const;
43
44     QList<ApiTraceFrame*> frames() const;
45     ApiTraceFrame *frameAt(int idx) const;
46     int numFrames() const;
47     int numCallsInFrame(int idx) const;
48
49     void callEdited(ApiTraceCall *call);
50     void callReverted(ApiTraceCall *call);
51     void callError(ApiTraceCall *call);
52
53     bool edited() const;
54     bool needsSaving() const;
55
56     bool isSaving() const;
57
58     bool hasErrors() const;
59
60 public slots:
61     void setFileName(const QString &name);
62     void setFrameMarker(FrameMarker marker);
63     void save();
64
65 signals:
66     void startedLoadingTrace();
67     void finishedLoadingTrace();
68     void invalidated();
69     void framesInvalidated();
70     void changed(ApiTraceCall *call);
71     void startedSaving();
72     void saved();
73
74     void beginAddingFrames(int oldCount, int numAdded);
75     void endAddingFrames();
76     void callsAdded(int oldCount, int numAdded);
77
78 private slots:
79     void addFrames(const QList<ApiTraceFrame*> &frames);
80     void slotSaved();
81 private:
82     void detectFrames();
83 private:
84     QString m_fileName;
85     QString m_tempFileName;
86
87     QList<ApiTraceFrame*> m_frames;
88     QList<ApiTraceCall*> m_calls;
89
90     FrameMarker m_frameMarker;
91
92     LoaderThread *m_loader;
93     SaverThread  *m_saver;
94
95     QSet<ApiTraceCall*> m_editedCalls;
96
97     bool m_needsSaving;
98
99     QSet<ApiTraceCall*> m_errors;
100     QHash<QString, ApiTraceCallSignature*> m_signatures;
101 };
102
103 #endif