X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=trace_snappyfile.hpp;h=398ff7900c335a4c7f3b55d8afe0e643c5651e49;hb=2257168033b52be3094efdbd7eadff8eb77a4c4e;hp=ecf39dedbe649a470f531aaba1bf56918812e797;hpb=46c4a32730c5b52c119376042a84a6773d8d789f;p=apitrace diff --git a/trace_snappyfile.hpp b/trace_snappyfile.hpp index ecf39de..398ff79 100644 --- a/trace_snappyfile.hpp +++ b/trace_snappyfile.hpp @@ -27,13 +27,13 @@ #ifndef TRACE_SNAPPYFILE_HPP #define TRACE_SNAPPYFILE_HPP +#include + #include "trace_file.hpp" #include #include -#include - namespace snappy { class File; } @@ -57,20 +57,27 @@ public: virtual void setCurrentOffset(const File::Offset &offset); protected: virtual bool rawOpen(const std::string &filename, File::Mode mode); - virtual bool rawWrite(const void *buffer, int length); - virtual bool rawRead(void *buffer, int length); + virtual bool rawWrite(const void *buffer, size_t length); + virtual bool rawRead(void *buffer, size_t length); virtual int rawGetc(); virtual void rawClose(); virtual void rawFlush(); virtual bool rawSkip(unsigned length); private: - inline int freeCacheSize() const + inline size_t usedCacheSize() const + { + assert(m_cachePtr >= m_cache); + return m_cachePtr - m_cache; + } + inline size_t freeCacheSize() const { - if (m_cacheSize > 0) - return m_cacheSize - (m_cachePtr - m_cache); - else + assert(m_cacheSize >= usedCacheSize()); + if (m_cacheSize > 0) { + return m_cacheSize - usedCacheSize(); + } else { return 0; + } } inline bool endOfData() const { @@ -78,8 +85,8 @@ private: } void flushCache(); void createCache(size_t size); - void writeCompressedLength(uint32_t num); - uint32_t readCompressedLength(); + void writeCompressedLength(size_t length); + size_t readCompressedLength(); private: std::fstream m_stream; char *m_cache;