Added a cGZipFile class for reading GZipped files.
git-svn-id: http://mc-server.googlecode.com/svn/trunk@1196 0a769ca7-a7f5-676a-18bf-c427514a06d6
This commit is contained in:
49
source/OSSupport/GZipFile.h
Normal file
49
source/OSSupport/GZipFile.h
Normal file
@@ -0,0 +1,49 @@
|
||||
|
||||
// GZipFile.h
|
||||
|
||||
// Declares the cGZipFile class representing a RAII wrapper over zlib's GZip file routines
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "zlib.h"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
class cGZipFile
|
||||
{
|
||||
public:
|
||||
enum eMode
|
||||
{
|
||||
fmRead, // Read-only. If the file doesn't exist, object will not be valid
|
||||
fmWrite, // Write-only. If the file already exists, it will be overwritten
|
||||
} ;
|
||||
|
||||
cGZipFile(void);
|
||||
~cGZipFile();
|
||||
|
||||
/// Opens the file. Returns true if successful. Fails if a file has already been opened through this object.
|
||||
bool Open(const AString & a_FileName, eMode a_Mode);
|
||||
|
||||
/// Closes the file, flushing all buffers. This object may be then reused for a different file and / or mode
|
||||
void Close(void);
|
||||
|
||||
/// Reads the rest of the file and decompresses it into a_Contents. Returns the number of decompressed bytes, <0 for error
|
||||
int ReadRestOfFile(AString & a_Contents);
|
||||
|
||||
/// Writes a_Contents into file, compressing it along the way. Returns the number of decompressed bytes, <0 for error. Multiple writes are supported.
|
||||
int Write(AString & a_Contents);
|
||||
|
||||
protected:
|
||||
gzFile m_File;
|
||||
} ;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user