1 #include "trace_file.hpp"
7 File::File(const std::string &filename,
9 : m_filename(filename),
13 if (!m_filename.empty()) {
14 open(m_filename, m_mode);
23 bool File::isOpened() const
28 File::Mode File::mode() const
33 std::string File::filename() const
38 bool File::open(const std::string &filename, File::Mode mode)
43 m_isOpened = rawOpen(filename, mode);
47 bool File::write(const void *buffer, int length)
49 if (!m_isOpened || m_mode != File::Write) {
52 return rawWrite(buffer, length);
55 bool File::read(void *buffer, int length)
57 if (!m_isOpened || m_mode != File::Read) {
60 return rawRead(buffer, length);
78 if (!m_isOpened || m_mode != File::Read) {
84 ZLibFile::ZLibFile(const std::string &filename,
86 : File(filename, mode),
95 bool ZLibFile::rawOpen(const std::string &filename, File::Mode mode)
97 m_gzFile = gzopen(filename.c_str(),
98 (mode == File::Write) ? "wb" : "rb");
99 return m_gzFile != NULL;
102 bool ZLibFile::rawWrite(const void *buffer, int length)
104 return gzwrite(m_gzFile, buffer, length);
107 bool ZLibFile::rawRead(void *buffer, int length)
109 return gzread(m_gzFile, buffer, length);
112 char ZLibFile::rawGetc()
114 return gzgetc(m_gzFile);
117 void ZLibFile::rawClose()
125 void ZLibFile::rawFlush()
127 gzflush(m_gzFile, Z_SYNC_FLUSH);