trace: Support properties in trace files.
diff --git a/lib/trace/trace_parser.hpp b/lib/trace/trace_parser.hpp
index 25d8121..2c5963f 100644
--- a/lib/trace/trace_parser.hpp
+++ b/lib/trace/trace_parser.hpp
@@ -45,6 +45,9 @@
};
+typedef std::map<std::string, std::string> Properties;
+
+
// Parser interface
class AbstractParser
{
@@ -56,6 +59,9 @@
virtual bool open(const char *filename) = 0;
virtual void close(void) = 0;
virtual unsigned long long getVersion(void) const = 0;
+ virtual const Properties & getProperties(void) const = 0;
+
+ const std::string & getProperty(const char *name) const;
};
@@ -70,6 +76,8 @@
SKIP
};
+ Properties properties;
+
typedef std::list<Call *> CallList;
CallList calls;
@@ -142,6 +150,10 @@
return semanticVersion;
}
+ const Properties & getProperties(void) const override {
+ return properties;
+ }
+
int percentRead()
{
return file->percentRead();
@@ -165,6 +177,8 @@
lookupCallFlags(const char *name);
protected:
+ void parseProperties(void);
+
Call *parse_Call(Mode mode);
void parse_enter(Mode mode);
@@ -230,7 +244,7 @@
Value *parse_wstring();
void scan_wstring();
- const char * read_string(void);
+ char * read_string(void);
void skip_string(void);
signed long long read_sint(void);