summaryrefslogtreecommitdiff
path: root/trace_parser.hpp
diff options
context:
space:
mode:
authorZack Rusin <zack@kde.org>2011-09-02 01:08:49 -0400
committerZack Rusin <zack@kde.org>2011-09-02 01:08:49 -0400
commit46c4a32730c5b52c119376042a84a6773d8d789f (patch)
tree636f481242573faea221c9ae957c161363e0faaf /trace_parser.hpp
parentf562f318ddee6da2041696887e2195fc3c96d740 (diff)
Implement scanning/skipping of fragments of the trace
for the initial scan. unfortunately it's not the improvement we were looking for. (from 11.9 to about 9.2 secs on a 240mb trace).
Diffstat (limited to 'trace_parser.hpp')
-rw-r--r--trace_parser.hpp41
1 files changed, 41 insertions, 0 deletions
diff --git a/trace_parser.hpp b/trace_parser.hpp
index f340da0..1f87b6f 100644
--- a/trace_parser.hpp
+++ b/trace_parser.hpp
@@ -112,6 +112,8 @@ public:
next_call_no = num;
}
+ Call *scan_call();
+
protected:
void parse_enter(void);
@@ -150,6 +152,45 @@ protected:
unsigned long long read_uint(void);
inline int read_byte(void);
+
+protected:
+ void scan_enter(void);
+
+ Call *scan_leave(void);
+
+ bool scan_call_details(Call *call);
+
+ void scan_arg(Call *call);
+
+ void scan_value(void);
+
+ void scan_sint();
+
+ void scan_uint();
+
+ void scan_float();
+
+ void scan_double();
+
+ void scan_string();
+
+ void scan_enum();
+
+ void scan_bitmask();
+
+ void scan_array(void);
+
+ void scan_blob(void);
+
+ void scan_struct();
+
+ void scan_opaque();
+
+ void skip_string(void);
+
+ void skip_uint(void);
+
+ inline void skip_byte(void);
};