Gray C++ Libraries  0.0.2
A set of C++ libraries for MSVC, GNU on Windows, WinCE, Linux
cStreamZLib.h
Go to the documentation of this file.
1 //
8 //
9 
10 #ifndef _INC_cStreamZLib_H
11 #define _INC_cStreamZLib_H
12 #ifndef NO_PRAGMA_ONCE
13 #pragma once
14 #endif
15 
16 #include "../GrayLibBase.h"
17 
18 #ifdef USE_ZLIB
21 
22 struct z_stream_s; // zlib internal/opaque structure in global namespace.
23 
24 namespace GrayLib
25 {
27  {
39  };
40 
42  {
48 
49  public:
50  typedef int ZRET_t;
51  public:
52  struct z_stream_s* m_pzstm;
53 
54  protected:
55  void InitializeInt();
56  void CleanupInt();
57 
58  public:
60  virtual ~cStreamZLibBase();
61 
62  virtual HRESULT FlushX() = 0;
63  int get_DataTypeCode() const;
64 
66  static HRESULT GRAYCALL Compress1(BYTE* pDest, size_t nDestSizeMax, const void* pSrc, size_t nSrcSize);
67  static HRESULT GRAYCALL Decompress1(void* pDest, size_t nDestSizeMax, const BYTE* pSrc, size_t nSrcSize);
68 
69  UNITTEST_FRIEND(cStreamZLib);
70  };
71 
72  //*************************************************************
73 
75  : public cStreamZLibBase
76  , public cStreamStackOut
77  {
80 
81  typedef cStreamZLibBase SUPER_t;
82 
83  protected:
87 
88  public:
89  cStreamZLibCompress(size_t nSizeMax = cStream::k_FILE_BLOCK_SIZE, cStreamOutput* pStreamOut = nullptr)
90  : cStreamStackOut(pStreamOut, nSizeMax)
91  {
92  }
94  {
95  FlushX();
96  }
97 
99  virtual HRESULT FlushX() override;
100  virtual HRESULT WriteX(const void* pData, size_t nDataSize) override; // cStreamOutput
101  };
102 
104  : public cStreamZLibBase
105  , public cStreamStackInp
106  {
109  typedef cStreamZLibBase SUPER_t;
110 
111  protected:
112  ZRET_t InitializeInt(bool bWeb);
114 
115  public:
117  : cStreamStackInp(pInp, nSizeMax)
118  {
119  }
121  {
122  FlushX();
123  }
124 
125  HRESULT Initialize(cStreamInput* pInp, bool bWeb);
126  virtual HRESULT FlushX() override;
127  virtual HRESULT ReadX(void* pData, size_t nDataSize) override; // cStreamInput override
128  };
129 };
130 
131 #endif // USE_ZLIB
132 #endif //_INC_cStreamZLib_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: cStreamZLib.h:42
UNITTEST_FRIEND(cStreamZLib)
static HRESULT GRAYCALL GetHResultFrom(ZRET_t izRet)
virtual HRESULT FlushX()=0
static HRESULT GRAYCALL Decompress1(void *pDest, size_t nDestSizeMax, const BYTE *pSrc, size_t nSrcSize)
static HRESULT GRAYCALL Compress1(BYTE *pDest, size_t nDestSizeMax, const void *pSrc, size_t nSrcSize)
struct z_stream_s * m_pzstm
pointer to hidden/opaque/private zlib implementation.
Definition: cStreamZLib.h:52
int get_DataTypeCode() const
e.g. Z_ASCII
int ZRET_t
Definition: cStreamZLib.h:50
Definition: cStreamZLib.h:77
ZRET_t InitializeInt(ZIP_COMPLEV_TYPE nCompLevel=ZIP_COMPLEV_Slow)
virtual HRESULT WriteX(const void *pData, size_t nDataSize) override
virtual ~cStreamZLibCompress()
Definition: cStreamZLib.h:93
HRESULT AdvanceCompressInt(int action)
virtual HRESULT FlushX() override
HRESULT Initialize(cStreamOutput *pOut, ZIP_COMPLEV_TYPE nCompLevel=ZIP_COMPLEV_Slow)
cStreamZLibCompress(size_t nSizeMax=cStream::k_FILE_BLOCK_SIZE, cStreamOutput *pStreamOut=nullptr)
Definition: cStreamZLib.h:89
Definition: cStreamZLib.h:106
cStreamZLibDecompress(size_t nSizeMax=cStream::k_FILE_BLOCK_SIZE, cStreamInput *pInp=nullptr)
Definition: cStreamZLib.h:116
ZRET_t InitializeInt(bool bWeb)
HRESULT Initialize(cStreamInput *pInp, bool bWeb)
virtual ~cStreamZLibDecompress()
Definition: cStreamZLib.h:120
virtual HRESULT FlushX() override
virtual HRESULT ReadX(void *pData, size_t nDataSize) override
Definition: cQueue.h:293
static const size_t k_FILE_BLOCK_SIZE
default arbitrary transfer block size. more than this is NOT more efficient.
Definition: cStream.h:89
Definition: cStream.h:306
Definition: cStream.h:126
Definition: cStreamStack.h:17
Definition: cStreamStack.h:41
Definition: cMesh.h:22
ZIP_COMPLEV_TYPE
Definition: cStreamZLib.h:27
@ ZIP_COMPLEV_8
Definition: cStreamZLib.h:36
@ ZIP_COMPLEV_6
Definition: cStreamZLib.h:35
@ ZIP_COMPLEV_DirStub
Internal stub for a directory. needs no compression anyhow.
Definition: cStreamZLib.h:30
@ ZIP_COMPLEV_QTY
Definition: cStreamZLib.h:38
@ ZIP_COMPLEV_2
Definition: cStreamZLib.h:34
@ ZIP_COMPLEV_Fast
Fastest = 1=Z_BEST_SPEED.
Definition: cStreamZLib.h:33
@ ZIP_COMPLEV_Def
Default = -1=Z_DEFAULT_COMPRESSION.
Definition: cStreamZLib.h:31
@ ZIP_COMPLEV_None
No compression ?
Definition: cStreamZLib.h:32
@ ZIP_COMPLEV_Slow
Slowest = 9=Z_BEST_COMPRESSION.
Definition: cStreamZLib.h:37