First working implementation of on-demand-loading of frames/calls.
diff --git a/trace_parser.hpp b/trace_parser.hpp
index a000986..a9f11f7 100644
--- a/trace_parser.hpp
+++ b/trace_parser.hpp
@@ -29,6 +29,7 @@
#include <iostream>
#include <list>
+#include <set>
#include "trace_file.hpp"
#include "trace_format.hpp"
@@ -57,6 +58,15 @@
typedef std::vector<BitmaskSig *> BitmaskMap;
BitmaskMap bitmasks;
+ typedef std::set<File::Offset> TraceOffsets;
+ TraceOffsets m_callSigOffsets;
+ TraceOffsets m_structSigOffsets;
+ TraceOffsets m_enumSigOffsets;
+ TraceOffsets m_bitmaskSigOffsets;
+
+ typedef std::map<File::Offset, unsigned> CallNumOffsets;
+ CallNumOffsets m_callNumOffsets;
+
unsigned next_call_no;
public:
@@ -87,6 +97,13 @@
file->setCurrentOffset(offset);
}
+ bool callWithSignature(const File::Offset &offset) const;
+ bool structWithSignature(const File::Offset &offset) const;
+ bool enumWithSignature(const File::Offset &offset) const;
+ bool bitmaskWithSignature(const File::Offset &offset) const;
+ bool hasCallBeenParsed(const File::Offset &offset) const;
+ unsigned callNumForOffset(const File::Offset &offset) const;
+
protected:
void parse_enter(void);