#include <iostream>
#include <list>
+#include "trace_file.hpp"
#include "trace_format.hpp"
#include "trace_model.hpp"
namespace Trace {
-
class Parser
{
protected:
- void *file;
+ File *file;
typedef std::list<Call *> CallList;
CallList calls;
- typedef std::vector<Call::Signature *> FunctionMap;
+ typedef std::vector<FunctionSig *> FunctionMap;
FunctionMap functions;
- typedef std::vector<Struct::Signature *> StructMap;
+ typedef std::vector<StructSig *> StructMap;
StructMap structs;
- typedef std::vector<Enum::Signature *> EnumMap;
+ typedef std::vector<EnumSig *> EnumMap;
EnumMap enums;
- typedef std::vector<Bitmask::Signature *> BitmaskMap;
+ typedef std::vector<BitmaskSig *> BitmaskMap;
BitmaskMap bitmasks;
unsigned next_call_no;
Call *parse_call(void);
+ bool supportsOffsets() const
+ {
+ return file-supportsOffsets();
+ }
+
+ File::Offset currentOffset()
+ {
+ return file->currentOffset();
+ }
+
+ void setCurrentOffset(const File::Offset &offset)
+ {
+ file->setCurrentOffset(offset);
+ }
+
protected:
void parse_enter(void);