#include <stdlib.h>
#include "trace_file.hpp"
+#include "trace_snappyfile.hpp"
#include "trace_parser.hpp"
Parser::Parser() {
- file = new Trace::SnappyFile;
+ file = NULL;
next_call_no = 0;
version = 0;
}
Parser::~Parser() {
close();
- delete file;
}
bool Parser::open(const char *filename) {
+ assert(!file);
+ if (File::isZLibCompressed(filename)) {
+ file = new ZLibFile;
+ } else {
+ file = new SnappyFile;
+ }
+
if (!file->open(filename, File::Read)) {
return false;
}
template <typename Container>
inline void
-deleteAll(const Container &c)
+deleteAll(Container &c)
{
deleteAll(c.begin(), c.end());
+ c.clear();
}
void Parser::close(void) {
- file->close();
+ if (file) {
+ file->close();
+ delete file;
+ file = NULL;
+ }
deleteAll(calls);
deleteAll(functions);