]> git.cworth.org Git - apitrace/blobdiff - trace_model.hpp
More compact struct representation.
[apitrace] / trace_model.hpp
index 5c162bc7f0da6ca76b276dbfd3bcf2a5b76755ef..c65fa03f97be60352d41eb8d87a8f4811e1a04cd 100644 (file)
@@ -185,6 +185,23 @@ public:
 };
 
 
+class Struct : public Value
+{
+public:
+   struct Signature {
+      std::string name;
+      std::vector<std::string> member_names;
+   };
+
+   Struct(Signature *_sig) : sig(_sig), members(_sig->member_names.size()) { }
+
+   void visit(Visitor &visitor);
+
+   const Signature *sig;
+   std::vector<Value *> members;
+};
+
+
 class Array : public Value
 {
 public:
@@ -226,6 +243,7 @@ public:
    virtual void visit(String *) {assert(0);}
    virtual void visit(Enum *) {assert(0);}
    virtual void visit(Bitmask *bitmask) {visit(static_cast<UInt *>(bitmask));}
+   virtual void visit(Struct *) {assert(0);}
    virtual void visit(Array *) {assert(0);}
    virtual void visit(Blob *) {assert(0);}
 
@@ -271,7 +289,6 @@ public:
 };
 
 
-
 std::ostream & operator <<(std::ostream &os, Call &call);