X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=common%2Ftrace_model.hpp;h=36f0a03eff83cb15d5919fb86b661eb0cd271513;hb=abaef29db0cf1a3e2adb0c254886162368b1645a;hp=4a9ca476f262580f6c32a83ce6ba882f41630935;hpb=084fe926e8fbbdf41f19d844157e4baac6a6b538;p=apitrace diff --git a/common/trace_model.hpp b/common/trace_model.hpp index 4a9ca47..36f0a03 100644 --- a/common/trace_model.hpp +++ b/common/trace_model.hpp @@ -91,6 +91,9 @@ struct BitmaskSig { class Visitor; +class Null; +class Struct; +class Array; class Value @@ -110,6 +113,15 @@ public: virtual unsigned long long toUIntPtr(void) const; virtual const char *toString(void) const; + virtual const Null *toNull(void) const { return NULL; } + virtual Null *toNull(void) { return NULL; } + + virtual const Array *toArray(void) const { return NULL; } + virtual Array *toArray(void) { return NULL; } + + virtual const Struct *toStruct(void) const { return NULL; } + virtual Struct *toStruct(void) { return NULL; } + const Value & operator[](size_t index) const; }; @@ -127,6 +139,9 @@ public: unsigned long long toUIntPtr(void) const; const char *toString(void) const; void visit(Visitor &visitor); + + const Null *toNull(void) const { return this; } + Null *toNull(void) { return this; } }; @@ -266,6 +281,9 @@ public: bool toBool(void) const; void visit(Visitor &visitor); + const Struct *toStruct(void) const { return this; } + Struct *toStruct(void) { return this; } + const StructSig *sig; std::vector members; }; @@ -280,6 +298,9 @@ public: bool toBool(void) const; void visit(Visitor &visitor); + const Array *toArray(void) const { return this; } + Array *toArray(void) { return this; } + std::vector values; inline size_t