X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=trace_file.hpp;h=e3d797d3b20d3228f06711cfc9b3d31eef86c7a5;hb=c9385be0ae27a206be571f342f299c8762627b56;hp=5a98f606ce32bb5f0204d4c614adae21cbe1c050;hpb=3887a0e91e021305b062e2ed280e05fee2a9f846;p=apitrace diff --git a/trace_file.hpp b/trace_file.hpp index 5a98f60..e3d797d 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);