X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=common%2Ftrace_model.hpp;h=bb8936e32946bc78763edb025802ce1f6adfccc4;hb=3223b1d6ce831bed7db99651f787cf0e827bd8b1;hp=3ddd9a0db13dc81bf5b7f959ecc64ededef67a69;hpb=1da480dd320a9d3d631a94025ca40609099f6d34;p=apitrace diff --git a/common/trace_model.hpp b/common/trace_model.hpp index 3ddd9a0..bb8936e 100644 --- a/common/trace_model.hpp +++ b/common/trace_model.hpp @@ -320,6 +320,35 @@ public: }; +class Repr : public Value +{ +public: + Repr(Value *human, Value *machine) : + humanValue(human), + machineValue(machine) + {} + + /** Human-readible value */ + Value *humanValue; + + /** Machine-readible value */ + Value *machineValue; + + virtual bool toBool(void) const; + virtual signed long long toSInt(void) const; + virtual unsigned long long toUInt(void) const; + virtual float toFloat(void) const; + virtual double toDouble(void) const; + + virtual void *toPointer(void) const; + virtual void *toPointer(bool bind); + virtual unsigned long long toUIntPtr(void) const; + virtual const char *toString(void) const; + + void visit(Visitor &visitor); +}; + + class Visitor { public: @@ -336,6 +365,7 @@ public: virtual void visit(Array *); virtual void visit(Blob *); virtual void visit(Pointer *); + virtual void visit(Repr *); protected: inline void _visit(Value *value) {