X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=common%2Ftrace_model.hpp;h=d04fe5eb4086ae3d4166426d6d030cc678a1e166;hb=3b99bf907fd1db1d18e98108469958e05c0870d3;hp=bb8936e32946bc78763edb025802ce1f6adfccc4;hpb=112a1329ecceaca7386369a1cc685af44dd34738;p=apitrace diff --git a/common/trace_model.hpp b/common/trace_model.hpp index bb8936e..d04fe5e 100644 --- a/common/trace_model.hpp +++ b/common/trace_model.hpp @@ -348,6 +348,29 @@ public: void visit(Visitor &visitor); }; +struct RawStackFrame { + Id id; + const char * module; + const char * function; + const char * filename; + int linenumber; + long long offset; + RawStackFrame() : + module(0), + function(0), + filename(0), + linenumber(-1), + offset(-1) + { + } +}; + +class StackFrame : public RawStackFrame { +public: + ~StackFrame(); +}; + +typedef std::vector Backtrace; class Visitor { @@ -366,7 +389,8 @@ public: virtual void visit(Blob *); virtual void visit(Pointer *); virtual void visit(Repr *); - + virtual void visit(Backtrace *); + virtual void visit(StackFrame *); protected: inline void _visit(Value *value) { if (value) { @@ -468,13 +492,15 @@ public: Value *ret; CallFlags flags; + Backtrace* backtrace; - Call(FunctionSig *_sig, const CallFlags &_flags, unsigned _thread_id) : + Call(const FunctionSig *_sig, const CallFlags &_flags, unsigned _thread_id) : thread_id(_thread_id), sig(_sig), args(_sig->num_args), ret(0), - flags(_flags) { + flags(_flags), + backtrace(0) { } ~Call();