]> git.cworth.org Git - apitrace/blobdiff - gui/apitracecall.h
A lot better data conversions.
[apitrace] / gui / apitracecall.h
index 6474663857b0a00abb5bf6952158932d5931e6f5..8dffb27c94374c5ff794a20c1862e2b2fa3c5670 100644 (file)
@@ -4,6 +4,99 @@
 #include <QStringList>
 #include <QVariant>
 
+#include "trace_model.hpp"
+
+
+class VariantVisitor : public Trace::Visitor
+{
+public:
+    virtual void visit(Trace::Null *);
+    virtual void visit(Trace::Bool *node);
+    virtual void visit(Trace::SInt *node);
+    virtual void visit(Trace::UInt *node);
+    virtual void visit(Trace::Float *node);
+    virtual void visit(Trace::String *node);
+    virtual void visit(Trace::Enum *e);
+    virtual void visit(Trace::Bitmask *bitmask);
+    virtual void visit(Trace::Struct *str);
+    virtual void visit(Trace::Array *array);
+    virtual void visit(Trace::Blob *blob);
+    virtual void visit(Trace::Pointer *ptr);
+
+    QVariant variant() const
+    {
+        return m_variant;
+    }
+private:
+    QVariant m_variant;
+};
+
+
+class ApiPointer
+{
+public:
+    ApiPointer(int val=0);
+
+    QString toString() const;
+private:
+    int m_value;
+};
+Q_DECLARE_METATYPE(ApiPointer);
+
+class ApiBitmask
+{
+public:
+    typedef QList<QPair<QString, unsigned long long> > Signature;
+
+    ApiBitmask(const Trace::Bitmask *bitmask = 0);
+
+    QString toString() const;
+
+private:
+    void init(const Trace::Bitmask *bitmask);
+private:
+    Signature m_sig;
+    unsigned long long m_value;
+};
+Q_DECLARE_METATYPE(ApiBitmask);
+
+class ApiStruct
+{
+public:
+    struct Signature {
+        QString name;
+        QStringList memberNames;
+    };
+
+    ApiStruct(const Trace::Struct *s = 0);
+
+    QString toString() const;
+
+private:
+    void init(const Trace::Struct *bitmask);
+private:
+    Signature m_sig;
+    QList<QVariant> m_members;
+};
+Q_DECLARE_METATYPE(ApiStruct);
+
+class ApiArray
+{
+public:
+    ApiArray(const Trace::Array *arr = 0);
+
+    QString toString() const;
+
+private:
+    void init(const Trace::Array *arr);
+private:
+    QList<QVariant> m_array;
+};
+Q_DECLARE_METATYPE(ApiArray);
+
+
+QString apiVariantToString(const QVariant &variant);
+
 class ApiTraceCall
 {
 public: