]> git.cworth.org Git - apitrace/blob - gui/apitracecall.h
A lot better data conversions.
[apitrace] / gui / apitracecall.h
1 #ifndef APITRACECALL_H
2 #define APITRACECALL_H
3
4 #include <QStringList>
5 #include <QVariant>
6
7 #include "trace_model.hpp"
8
9
10 class VariantVisitor : public Trace::Visitor
11 {
12 public:
13     virtual void visit(Trace::Null *);
14     virtual void visit(Trace::Bool *node);
15     virtual void visit(Trace::SInt *node);
16     virtual void visit(Trace::UInt *node);
17     virtual void visit(Trace::Float *node);
18     virtual void visit(Trace::String *node);
19     virtual void visit(Trace::Enum *e);
20     virtual void visit(Trace::Bitmask *bitmask);
21     virtual void visit(Trace::Struct *str);
22     virtual void visit(Trace::Array *array);
23     virtual void visit(Trace::Blob *blob);
24     virtual void visit(Trace::Pointer *ptr);
25
26     QVariant variant() const
27     {
28         return m_variant;
29     }
30 private:
31     QVariant m_variant;
32 };
33
34
35 class ApiPointer
36 {
37 public:
38     ApiPointer(int val=0);
39
40     QString toString() const;
41 private:
42     int m_value;
43 };
44 Q_DECLARE_METATYPE(ApiPointer);
45
46 class ApiBitmask
47 {
48 public:
49     typedef QList<QPair<QString, unsigned long long> > Signature;
50
51     ApiBitmask(const Trace::Bitmask *bitmask = 0);
52
53     QString toString() const;
54
55 private:
56     void init(const Trace::Bitmask *bitmask);
57 private:
58     Signature m_sig;
59     unsigned long long m_value;
60 };
61 Q_DECLARE_METATYPE(ApiBitmask);
62
63 class ApiStruct
64 {
65 public:
66     struct Signature {
67         QString name;
68         QStringList memberNames;
69     };
70
71     ApiStruct(const Trace::Struct *s = 0);
72
73     QString toString() const;
74
75 private:
76     void init(const Trace::Struct *bitmask);
77 private:
78     Signature m_sig;
79     QList<QVariant> m_members;
80 };
81 Q_DECLARE_METATYPE(ApiStruct);
82
83 class ApiArray
84 {
85 public:
86     ApiArray(const Trace::Array *arr = 0);
87
88     QString toString() const;
89
90 private:
91     void init(const Trace::Array *arr);
92 private:
93     QList<QVariant> m_array;
94 };
95 Q_DECLARE_METATYPE(ApiArray);
96
97
98 QString apiVariantToString(const QVariant &variant);
99
100 class ApiTraceCall
101 {
102 public:
103     QString name;
104     QStringList argNames;
105     QVariantList argValues;
106     QVariant returnValue;
107 };
108
109 #endif