X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;ds=sidebyside;f=trace_model.hpp;h=ddbcabd2993e357687588f7d3c0c549b609e715a;hb=a26cf3eea71454aa5cc466a2abbe01537c95c31c;hp=05d809ee69eabdd846544a92074517f5cde7d4f8;hpb=1b23ed28505a34cda19b5cc1b7578e63c0c63237;p=apitrace diff --git a/trace_model.hpp b/trace_model.hpp index 05d809e..ddbcabd 100644 --- a/trace_model.hpp +++ b/trace_model.hpp @@ -34,16 +34,52 @@ #include #include -#include #include #include -#include "trace_writer.hpp" - namespace Trace { +typedef unsigned Id; + + +struct FunctionSig { + Id id; + const char *name; + unsigned num_args; + const char **arg_names; +}; + + +struct StructSig { + Id id; + const char *name; + unsigned num_members; + const char **member_names; +}; + + +struct EnumSig { + Id id; + const char *name; + signed long long value; +}; + + +struct BitmaskFlag { + const char *name; + unsigned long long value; +}; + + +struct BitmaskSig { + Id id; + unsigned num_flags; + const BitmaskFlag *flags; +}; + + class Visitor; @@ -275,17 +311,12 @@ std::ostream & operator <<(std::ostream &os, Value *value); class Call { public: - struct Signature { - const char * name; - std::vector arg_names; - }; - unsigned no; - const Signature *sig; + const FunctionSig *sig; std::vector args; Value *ret; - Call(Signature *_sig) : sig(_sig), args(_sig->arg_names.size()), ret(0) { } + Call(FunctionSig *_sig) : sig(_sig), args(_sig->num_args), ret(0) { } ~Call(); inline const char * name(void) const {