]> git.cworth.org Git - apitrace/commitdiff
Implement ZlibFile::currentOffset.
authorJosé Fonseca <jose.r.fonseca@gmail.com>
Sun, 11 Sep 2011 13:12:12 +0000 (14:12 +0100)
committerJosé Fonseca <jose.r.fonseca@gmail.com>
Sun, 11 Sep 2011 13:12:12 +0000 (14:12 +0100)
It helps making the parsing code simpler, and should not have any
performance impact.

trace_file.cpp
trace_file.hpp

index 45473b345ffa3a3cae447ccab1fe101e93f91514..81bc3430d868ea6262935bf7d66e4ac6efa88c52 100644 (file)
@@ -57,11 +57,6 @@ File::~File()
 }
 
 
-File::Offset File::currentOffset()
-{
-    return File::Offset();
-}
-
 void File::setCurrentOffset(const File::Offset &offset)
 {
 }
@@ -163,6 +158,10 @@ void ZLibFile::rawFlush()
     gzflush(m_gzFile, Z_SYNC_FLUSH);
 }
 
+File::Offset ZLibFile::currentOffset()
+{
+    return File::Offset(gztell(m_gzFile));
+}
 
 bool ZLibFile::supportsOffsets() const
 {
index f6e77ae8b69802c88f96b8b31b48d6f3cd2c013c..7214d7826db29d183c9695208e6e1981cd525b2a 100644 (file)
@@ -40,9 +40,9 @@ public:
         Write
     };
     struct Offset {
-        Offset()
-            : chunk(0),
-              offsetInChunk(0)
+        Offset(uint64_t _chunk = 0, uint32_t _offsetInChunk = 0)
+            : chunk(_chunk),
+              offsetInChunk(_offsetInChunk)
         {}
         uint64_t chunk;
         uint32_t offsetInChunk;
@@ -71,7 +71,7 @@ public:
     int percentRead();
 
     virtual bool supportsOffsets() const = 0;
-    virtual File::Offset currentOffset();
+    virtual File::Offset currentOffset() = 0;
     virtual void setCurrentOffset(const File::Offset &offset);
 protected:
     virtual bool rawOpen(const std::string &filename, File::Mode mode) = 0;
@@ -178,6 +178,7 @@ public:
 
 
     virtual bool supportsOffsets() const;
+    virtual File::Offset currentOffset();
 protected:
     virtual bool rawOpen(const std::string &filename, File::Mode mode);
     virtual bool rawWrite(const void *buffer, size_t length);