]> git.cworth.org Git - apitrace/blobdiff - common/trace_model.hpp
First stab at tracing thread IDs.
[apitrace] / common / trace_model.hpp
index f208032d371eeb1e38d4704c07dc342203b88931..076ff098d61f9fa25edf72a80aef7c4796663d9f 100644 (file)
 
 
 #include <assert.h>
+#include <stdlib.h>
 
 #include <map>
 #include <vector>
-#include <iostream>
 
 
 namespace trace {
@@ -60,13 +60,19 @@ struct StructSig {
 };
 
 
-struct EnumSig {
-    Id id;
+struct EnumValue {
     const char *name;
     signed long long value;
 };
 
 
+struct EnumSig {
+    Id id;
+    unsigned num_values;
+    const EnumValue *values;
+};
+
+
 struct BitmaskFlag {
     const char *name;
     unsigned long long value;
@@ -101,8 +107,6 @@ public:
     virtual const char *toString(void) const;
 
     const Value & operator[](size_t index) const;
-
-    void dump(std::ostream &os, bool color=true);
 };
 
 
@@ -216,16 +220,11 @@ public:
 };
 
 
-class Enum : public Value
+class Enum : public SInt
 {
 public:
-    Enum(const EnumSig *_sig) : sig(_sig) {}
+    Enum(const EnumSig *_sig, signed long long _value) : SInt(_value), sig(_sig) {}
 
-    bool toBool(void) const;
-    signed long long toSInt(void) const;
-    unsigned long long toUInt(void) const;
-    virtual float toFloat(void) const;
-    virtual double toDouble(void) const;
     void visit(Visitor &visitor);
 
     const EnumSig *sig;
@@ -331,14 +330,6 @@ protected:
 };
 
 
-inline std::ostream & operator <<(std::ostream &os, Value *value) {
-    if (value) {
-        value->dump(os);
-    }
-    return os;
-}
-
-
 typedef unsigned CallFlags;
 
 /**
@@ -419,6 +410,7 @@ enum {
 class Call
 {
 public:
+    unsigned thread_id;
     unsigned no;
     const FunctionSig *sig;
     std::vector<Value *> args;
@@ -426,7 +418,8 @@ public:
 
     CallFlags flags;
 
-    Call(FunctionSig *_sig, const CallFlags &_flags) :
+    Call(FunctionSig *_sig, const CallFlags &_flags, unsigned _thread_id) :
+        thread_id(_thread_id), 
         sig(_sig), 
         args(_sig->num_args), 
         ret(0),
@@ -443,17 +436,9 @@ public:
         assert(index < args.size());
         return *(args[index]);
     }
-
-    void dump(std::ostream &os, bool color=true);
 };
 
 
-inline std::ostream & operator <<(std::ostream &os, Call &call) {
-    call.dump(os);
-    return os;
-}
-
-
 } /* namespace trace */
 
 #endif /* _TRACE_MODEL_HPP_ */