X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;ds=inline;f=common%2Ftrace_parser.hpp;h=7bf0a7dce1058f2fd111ab45b2aa5ba5f1d34ca7;hb=d9d9d22837705de6a2c42ad3f9b23223a2b98fe0;hp=d8c5915ea3d8e3976c1b2d38e33d8e8f57a21d53;hpb=eb64451efcd8100d02ec89ff2ae6ea2c78c7645b;p=apitrace diff --git a/common/trace_parser.hpp b/common/trace_parser.hpp index d8c5915..7bf0a7d 100644 --- a/common/trace_parser.hpp +++ b/common/trace_parser.hpp @@ -33,6 +33,7 @@ #include "trace_file.hpp" #include "trace_format.hpp" #include "trace_model.hpp" +#include "trace_api.hpp" namespace trace { @@ -70,23 +71,26 @@ protected: // Offset in the file of where signature was defined. It is used when // reparsing to determine whether the signature definition is to be // expected next or not. - File::Offset offset; + File::Offset fileOffset; }; typedef SigState FunctionSigState; typedef SigState StructSigState; typedef SigState EnumSigState; typedef SigState BitmaskSigState; + typedef SigState StackFrameState; typedef std::vector FunctionMap; typedef std::vector StructMap; typedef std::vector EnumMap; typedef std::vector BitmaskMap; + typedef std::vector StackFrameMap; FunctionMap functions; StructMap structs; EnumMap enums; BitmaskMap bitmasks; + StackFrameMap frames; FunctionSig *glGetErrorSig; @@ -94,6 +98,7 @@ protected: public: unsigned long long version; + API api; Parser(); @@ -145,6 +150,9 @@ protected: bool parse_call_details(Call *call, Mode mode); + bool parse_call_backtrace(Call *call, Mode mode); + StackFrame * parse_backtrace_frame(Mode mode); + void adjust_call_flags(Call *call); void parse_arg(Call *call, Mode mode); @@ -193,6 +201,9 @@ protected: Value *parse_opaque(); void scan_opaque(); + Value *parse_repr(); + void scan_repr(); + const char * read_string(void); void skip_string(void);