Gray C++ Libraries  0.0.2
A set of C++ libraries for MSVC, GNU on Windows, WinCE, Linux
cStreamBZ2.h
Go to the documentation of this file.
1 //
4 //
5 #ifndef _INC_cStreamBZ2_H
6 #define _INC_cStreamBZ2_H
7 #ifndef NO_PRAGMA_ONCE
8 #pragma once
9 #endif
10 
11 #include "../GrayLibBase.h"
12 
13 #ifdef USE_BZIP2
16 
17 namespace GrayLib
18 {
20  {
27 
28  protected:
29  typedef int ZRET_t;
30  void* m_pzstm;
31  // #define m_PZSTM ((bz_stream*)m_pzstm) // Cast to non opaque structure locally.
32 
33  private:
34  static void* __cdecl bzalloc(void* pThis, int iSize, int iQty);
35  static void __cdecl bzfree(void* pThis, void* pData);
36 
37  protected:
38  void InitializeInt();
39  void CleanupInt();
40 
41  public:
43  virtual ~cStreamBZ2Base();
44  virtual HRESULT FlushX() = 0;
45 
47  static HRESULT GRAYCALL Compress1(BYTE* pDest, size_t nDestSizeMax, const void* pSrc, size_t nSrcSize);
48  static HRESULT GRAYCALL Decompress1(void* pDest, size_t nDestSizeMax, const BYTE* pSrc, size_t nSrcSize);
49 
51  };
52 
53  //*************************************************************
54 
56  : public cStreamBZ2Base
57  , public cStreamStackOut
58  {
61  typedef cStreamBZ2Base SUPER_t;
62 
63  protected:
64  ZRET_t InitializeInt(int nWorkLevel);
67 
68  public:
69  cStreamBZ2Compress(size_t nSizeBuffer = 100000 + 100, cStreamOutput* pOut = nullptr)
70  : cStreamStackOut(pOut, nSizeBuffer)
71  {
73  }
75  {
76  FlushX();
77  }
78 
79  HRESULT Initialize(cStreamOutput* pOut, int nWorkLevel = 1);
80  virtual HRESULT FlushX() override;
81  virtual HRESULT WriteX(const void* pData, size_t nDataSize) override; // cStreamOutput
82  };
83 
85  : public cStreamBZ2Base
86  , public cStreamStackInp
87  {
90  typedef cStreamBZ2Base SUPER_t;
91 
92  protected:
93  ZRET_t InitializeInt(int nWorkLevel);
95 
96  public:
97  cStreamBZ2Decompress(size_t nSizeBuffer = 100000 + 100, cStreamInput* pInp = nullptr)
98  : cStreamStackInp(pInp, nSizeBuffer)
99  {
100  }
102  {
103  FlushX();
104  }
105 
106  HRESULT Initialize(cStreamInput* pInp, int iSmall = 0);
107  virtual HRESULT FlushX() override;
108  virtual HRESULT ReadX(void* pData, size_t nDataSize) override; // cStreamInput override
109  };
110 }
111 
112 #endif // USE_BZIP2
113 #endif // _INC_cStreamBZ2_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: cStreamBZ2.h:20
int ZRET_t
Definition: cStreamBZ2.h:29
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)
void * m_pzstm
pointer to private/opaque bz_stream BZ2 implementation.
Definition: cStreamBZ2.h:30
static HRESULT GRAYCALL Compress1(BYTE *pDest, size_t nDestSizeMax, const void *pSrc, size_t nSrcSize)
UNITTEST_FRIEND(cStreamBZ2Base)
Definition: cStreamBZ2.h:58
cStreamBZ2Compress(size_t nSizeBuffer=100000+100, cStreamOutput *pOut=nullptr)
Definition: cStreamBZ2.h:69
virtual ~cStreamBZ2Compress()
Definition: cStreamBZ2.h:74
HRESULT AdvanceCompressInt(int iAction)
ZRET_t InitializeInt(int nWorkLevel)
virtual HRESULT FlushX() override
virtual HRESULT WriteX(const void *pData, size_t nDataSize) override
HRESULT Initialize(cStreamOutput *pOut, int nWorkLevel=1)
Definition: cStreamBZ2.h:87
virtual HRESULT FlushX() override
virtual ~cStreamBZ2Decompress()
Definition: cStreamBZ2.h:101
cStreamBZ2Decompress(size_t nSizeBuffer=100000+100, cStreamInput *pInp=nullptr)
Definition: cStreamBZ2.h:97
HRESULT Initialize(cStreamInput *pInp, int iSmall=0)
ZRET_t InitializeInt(int nWorkLevel)
virtual HRESULT ReadX(void *pData, size_t nDataSize) override
Definition: cQueue.h:293
Definition: cStream.h:306
Definition: cStream.h:126
Definition: cStreamStack.h:17
Definition: cStreamStack.h:41
Definition: cMesh.h:22