]> git.cworth.org Git - apitrace/blobdiff - gui/apitracecall.h
Use skiplist-based FastCallSet within trace::CallSet
[apitrace] / gui / apitracecall.h
index 15dca1321ece3703f50073020c1ab82ce350b9ec..6c6b6074b6dcae2799e1f4a750cdc293120c3f53 100644 (file)
 class ApiTrace;
 class TraceLoader;
 
-class VariantVisitor : public Trace::Visitor
+class VariantVisitor : public trace::Visitor
 {
 public:
     VariantVisitor(TraceLoader *loader)
         : m_loader(loader)
     {}
-    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);
+    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::Double *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);
+    virtual void visit(trace::Repr *ptr);
 
     QVariant variant() const
     {
@@ -53,23 +55,19 @@ struct ApiTraceError
 class ApiTraceEnumSignature
 {
 public:
-    ApiTraceEnumSignature(const QString &name = QString(),
-                          const QVariant &val=QVariant())\
-        : m_name(name),
-          m_value(val)
-    {}
+    ApiTraceEnumSignature(const trace::EnumSig *sig);
+
+    QString name(signed long long value) const;
 
-    QVariant value() const { return m_value; }
-    QString name() const { return m_name; }
 private:
-    QString m_name;
-    QVariant m_value;
+    typedef QList<QPair<QString, signed long long> > ValueList;
+    ValueList m_names;
 };
 
 class ApiEnum
 {
 public:
-    ApiEnum(ApiTraceEnumSignature *sig=0);
+    ApiEnum(ApiTraceEnumSignature *sig=0, signed long long value = 0);
 
     QString toString() const;
 
@@ -77,6 +75,7 @@ public:
     QString name() const;
 private:
     ApiTraceEnumSignature *m_sig;
+    signed long long m_value;
 };
 Q_DECLARE_METATYPE(ApiEnum);
 
@@ -99,7 +98,7 @@ class ApiBitmask
 public:
     typedef QList<QPair<QString, unsigned long long> > Signature;
 
-    ApiBitmask(const Trace::Bitmask *bitmask = 0);
+    ApiBitmask(const trace::Bitmask *bitmask = 0);
 
     QString toString() const;
 
@@ -107,7 +106,7 @@ public:
     Signature signature() const;
 
 private:
-    void init(const Trace::Bitmask *bitmask);
+    void init(const trace::Bitmask *bitmask);
 private:
     Signature m_sig;
     unsigned long long m_value;
@@ -122,14 +121,14 @@ public:
         QStringList memberNames;
     };
 
-    ApiStruct(const Trace::Struct *s = 0);
+    ApiStruct(const trace::Struct *s = 0);
 
-    QString toString() const;
+    QString toString(bool multiLine = false) const;
     Signature signature() const;
     QList<QVariant> values() const;
 
 private:
-    void init(const Trace::Struct *bitmask);
+    void init(const trace::Struct *bitmask);
 private:
     Signature m_sig;
     QList<QVariant> m_members;
@@ -139,14 +138,14 @@ Q_DECLARE_METATYPE(ApiStruct);
 class ApiArray
 {
 public:
-    ApiArray(const Trace::Array *arr = 0);
+    ApiArray(const trace::Array *arr = 0);
     ApiArray(const QVector<QVariant> &vals);
 
-    QString toString() const;
+    QString toString(bool multiLine = false) const;
 
     QVector<QVariant> values() const;
 private:
-    void init(const Trace::Array *arr);
+    void init(const trace::Array *arr);
 private:
     QVector<QVariant> m_array;
 };
@@ -244,7 +243,7 @@ class ApiTraceCall : public ApiTraceEvent
 {
 public:
     ApiTraceCall(ApiTraceFrame *parentFrame, TraceLoader *loader,
-                 const Trace::Call *tcall);
+                 const trace::Call *tcall);
     ~ApiTraceCall();
 
     int index() const;
@@ -252,6 +251,7 @@ public:
     QStringList argNames() const;
     QVector<QVariant> arguments() const;
     QVariant returnValue() const;
+    trace::CallFlags flags() const;
     QUrl helpUrl() const;
     void setHelpUrl(const QUrl &url);
     ApiTraceFrame *parentFrame()const;
@@ -284,6 +284,7 @@ private:
     ApiTraceCallSignature *m_signature;
     QVector<QVariant> m_argValues;
     QVariant m_returnValue;
+    trace::CallFlags m_flags;
     ApiTraceFrame *m_parentFrame;
 
     QVector<QVariant> m_editedValues;
@@ -330,11 +331,15 @@ public:
 
     int binaryDataSize() const;
 
-    bool loaded() const;
+    bool isLoaded() const;
     void setLoaded(bool l);
 
     void setLastCallIndex(unsigned index);
     unsigned lastCallIndex() const;
+
+    void setThumbnail(const QImage & thumbnail);
+    const QImage & thumbnail() const;
+
 private:
     ApiTrace *m_parentTrace;
     quint64 m_binaryDataSize;
@@ -342,6 +347,7 @@ private:
     bool m_loaded;
     unsigned m_callsToLoad;
     unsigned m_lastCallIndex;
+    QImage m_thumbnail;
 };
 Q_DECLARE_METATYPE(ApiTraceFrame*);