X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=trace_file.hpp;h=fed30a0a8835f64a72c0d61f903279ae3f49b785;hb=712429a22a8cc9d51b620d433ade6d327fbabbf0;hp=a8b33459a024dc44d348f1c6cdd075d2e52a5439;hpb=07348d58030f889a4ec11bfcef9a32628e55afa4;p=apitrace diff --git a/trace_file.hpp b/trace_file.hpp index a8b3345..fed30a0 100644 --- a/trace_file.hpp +++ b/trace_file.hpp @@ -29,6 +29,7 @@ #include #include +#include namespace Trace { @@ -38,6 +39,15 @@ public: Read, Write }; + struct Offset { + Offset() + : chunk(0), + offsetInChunk(0) + {} + uint64_t chunk; + uint32_t offsetInChunk; + }; + public: static bool isZLibCompressed(const std::string &filename); static bool isSnappyCompressed(const std::string &filename); @@ -58,6 +68,9 @@ public: void flush(void); int getc(); + virtual bool supportsOffsets() const = 0; + virtual File::Offset currentOffset(); + virtual void setCurrentOffset(const File::Offset &offset); protected: virtual bool rawOpen(const std::string &filename, File::Mode mode) = 0; virtual bool rawWrite(const void *buffer, int length) = 0; @@ -141,6 +154,8 @@ public: File::Mode mode = File::Read); virtual ~ZLibFile(); + + virtual bool supportsOffsets() const; protected: virtual bool rawOpen(const std::string &filename, File::Mode mode); virtual bool rawWrite(const void *buffer, int length);