Gray C++ Libraries  0.0.2
A set of C++ libraries for MSVC, GNU on Windows, WinCE, Linux
cZipWriter.h
Go to the documentation of this file.
1 //
6 //
7 
8 #ifndef _INC_cZipWriter_H
9 #define _INC_cZipWriter_H
10 #ifndef NO_PRAGMA_ONCE
11 #pragma once
12 #endif
13 
14 #include "cZipDir.h"
15 
16 #ifdef USE_ZLIB
17 #include "../Codec/cStreamZLib.h"
19 #include "GrayCore/include/cFile.h"
20 
21 namespace GrayLib
22 {
23  class cZipFileEntry1;
24 
26  {
30 
31  public:
34 
35  protected:
38 
39  protected:
41  HRESULT AddFile(ZIP_COMPLEV_TYPE nCompLevel, const char* pszPassword, cZipFileEntry1& rEntry, cStreamInput* pInp);
43 
44  private:
45  HRESULT AddFileData(const char* pszPassword, cZipFileEntry1& rEntry, cStreamInput* pFile);
46 
47  public:
48  cZipWriter(cStreamOutput* pOut = nullptr, const FILECHAR_t* pszRootFolder = nullptr);
49  virtual ~cZipWriter();
50 
51  // simple interface
52  static HRESULT GRAYCALL ZipFile(const FILECHAR_t* pszFilePath, const FILECHAR_t* pszZipFile = nullptr, ZIP_CTRL_TYPE bZCtrl = ZIP_CTRL_0, const char* pszPass = nullptr); // saves as same name with .zip
53  static HRESULT GRAYCALL ZipFolder(const FILECHAR_t* pszSrcRoot, const FILECHAR_t* pszDrcDir = nullptr, const FILECHAR_t* pszZipFile = nullptr, ZIP_CTRL_TYPE bZCtrl = ZIP_CTRL_0, const char* pszPass = nullptr); // saves as same name with .zip
54 
55  // works with prior opened zip
56  HRESULT AddFileToZip(const FILECHAR_t* pszFilePath, ZIP_CTRL_TYPE bZCtrl = 0, ZIP_COMPLEV_TYPE nCompLevel = ZIP_COMPLEV_Def, const char* pszPass = nullptr);
57  HRESULT AddFolderToZip(const FILECHAR_t* pszFolderPath, ZIP_CTRL_TYPE bZCtrl = 0, ZIP_COMPLEV_TYPE nCompLevel = ZIP_COMPLEV_Def, const char* pszPass = nullptr);
58 
59  // extended interface
60  HRESULT OpenZip(cStreamOutput* pOut, const FILECHAR_t* pszRootFolder, cStreamInput* pInpAppend = nullptr);
61  HRESULT CloseZip(); // for multiple reuse
62 
64  };
65 }
66 #endif // USE_ZLIB
67 #endif // _INC_cZipWriter_H
#define GRAYCALL
declare calling convention for static functions so everyone knows the arg passing scheme....
Definition: GrayCore.h:36
#define GRAYLIB_LINK
Definition: GrayLibBase.h:35
INT32 HRESULT
_WIN32 style error codes. INT32
Definition: SysTypes.h:465
Definition: cZipDir.h:94
Definition: cZipDir.h:331
Definition: cZipWriter.h:26
cZipDir m_dir
central directory header.
Definition: cZipWriter.h:32
HRESULT AddFile(ZIP_COMPLEV_TYPE nCompLevel, const char *pszPassword, cZipFileEntry1 &rEntry, cStreamInput *pInp)
cStringF m_sRootFolder
Subtract this from the stored file names. Root is not stored.
Definition: cZipWriter.h:37
cZipWriter(cStreamOutput *pOut=nullptr, const FILECHAR_t *pszRootFolder=nullptr)
UNITTEST_FRIEND(cZipWriter)
cArrayStruct< cZipFileEntry1 > m_aDirEntries
central directory entries in construction.
Definition: cZipWriter.h:33
static HRESULT GRAYCALL ZipFile(const FILECHAR_t *pszFilePath, const FILECHAR_t *pszZipFile=nullptr, ZIP_CTRL_TYPE bZCtrl=ZIP_CTRL_0, const char *pszPass=nullptr)
HRESULT ReadZipDir(cStreamInput *pInpAppend)
cStreamOutput * m_pOut
zip file i am writing.
Definition: cZipWriter.h:36
HRESULT OpenZip(cStreamOutput *pOut, const FILECHAR_t *pszRootFolder, cStreamInput *pInpAppend=nullptr)
HRESULT AddFileToZip(const FILECHAR_t *pszFilePath, ZIP_CTRL_TYPE bZCtrl=0, ZIP_COMPLEV_TYPE nCompLevel=ZIP_COMPLEV_Def, const char *pszPass=nullptr)
HRESULT AddFolderToZip(const FILECHAR_t *pszFolderPath, ZIP_CTRL_TYPE bZCtrl=0, ZIP_COMPLEV_TYPE nCompLevel=ZIP_COMPLEV_Def, const char *pszPass=nullptr)
static HRESULT GRAYCALL ZipFolder(const FILECHAR_t *pszSrcRoot, const FILECHAR_t *pszDrcDir=nullptr, const FILECHAR_t *pszZipFile=nullptr, ZIP_CTRL_TYPE bZCtrl=ZIP_CTRL_0, const char *pszPass=nullptr)
Definition: cArray.h:932
Definition: cStream.h:306
Definition: cStream.h:126
Definition: cMesh.h:22
ZIP_COMPLEV_TYPE
Definition: cStreamZLib.h:27
@ ZIP_COMPLEV_Def
Default = -1=Z_DEFAULT_COMPRESSION.
Definition: cStreamZLib.h:31
@ ZIP_CTRL_0
Definition: cZipDir.h:41
BYTE ZIP_CTRL_TYPE
Definition: cZipDir.h:44
char FILECHAR_t
a UTF8 char in a file name. like TCHAR
Definition: FileName.h:22